[Bf-blender-cvs] [02543bf7a1e] greasepencil-object: Fix segment fault when free GHash
Antonio Vazquez
noreply at git.blender.org
Wed Jul 26 16:52:07 CEST 2017
Commit: 02543bf7a1ea547cd2129fb8a3755242c955cf20
Author: Antonio Vazquez
Date: Wed Jul 26 16:51:56 2017 +0200
Branches: greasepencil-object
https://developer.blender.org/rB02543bf7a1ea547cd2129fb8a3755242c955cf20
Fix segment fault when free GHash
If the GHash is null, don't free again
===================================================================
M source/blender/blenkernel/intern/gpencil.c
M source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 63750fa0548..69087a57e7a 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -273,8 +273,10 @@ static void BKE_gpencil_free_layers_temp_data(ListBase *list)
gpl_next = gpl->next;
BKE_gpencil_clear_derived(gpl);
- BLI_ghash_free(gpl->derived_data, NULL, NULL);
- gpl->derived_data = NULL;
+ if (gpl->derived_data) {
+ BLI_ghash_free(gpl->derived_data, NULL, NULL);
+ gpl->derived_data = NULL;
+ }
}
}
@@ -286,8 +288,10 @@ void BKE_gpencil_free_derived_frames(bGPdata *gpd)
for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) {
BKE_gpencil_clear_derived(gpl);
- BLI_ghash_free(gpl->derived_data, NULL, NULL);
- gpl->derived_data = NULL;
+ if (gpl->derived_data) {
+ BLI_ghash_free(gpl->derived_data, NULL, NULL);
+ gpl->derived_data = NULL;
+ }
}
}
@@ -1230,8 +1234,10 @@ void BKE_gpencil_layer_delete(bGPdata *gpd, bGPDlayer *gpl)
/* free derived data */
BKE_gpencil_clear_derived(gpl);
- BLI_ghash_free(gpl->derived_data, NULL, NULL);
- gpl->derived_data = NULL;
+ if (gpl->derived_data) {
+ BLI_ghash_free(gpl->derived_data, NULL, NULL);
+ gpl->derived_data = NULL;
+ }
BLI_freelinkN(&gpd->layers, gpl);
}
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
index e394fea31cd..0b2f52a01db 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -863,8 +863,10 @@ void DRW_gpencil_batch_cache_free(bGPdata *gpd)
BLI_ghashIterator_free(ihash);
/* free hash */
- BLI_ghash_free(gpd->batch_cache_data, NULL, NULL);
- gpd->batch_cache_data = NULL;
+ if (gpd->batch_cache_data) {
+ BLI_ghash_free(gpd->batch_cache_data, NULL, NULL);
+ gpd->batch_cache_data = NULL;
+ }
}
struct GPUTexture *DRW_gpencil_create_blank_texture(int width, int height)
More information about the Bf-blender-cvs
mailing list