[Bf-blender-cvs] [a4642040dfe] greasepencil-object: Fix mermory leak for materials
Antonio Vazquez
noreply at git.blender.org
Fri Apr 27 16:39:29 CEST 2018
Commit: a4642040dfee448f80363536ae02fc6fa675194f
Author: Antonio Vazquez
Date: Fri Apr 27 16:39:12 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rBa4642040dfee448f80363536ae02fc6fa675194f
Fix mermory leak for materials
The materials array must be duplicated and free in every undo step.
===================================================================
M source/blender/blenkernel/intern/gpencil.c
===================================================================
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 8d95618f9ed..277bf5afe8d 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -265,14 +265,14 @@ void BKE_gpencil_free(bGPdata *gpd, bool free_all)
}
BKE_gpencil_free_layers(&gpd->layers);
+ /* materials */
+ MEM_SAFE_FREE(gpd->mat);
+
/* free all data */
if (free_all) {
/* clear cache */
BKE_gpencil_batch_cache_free(gpd);
- /* materials */
- MEM_SAFE_FREE(gpd->mat);
-
/* free palettes (deprecated) */
BKE_gpencil_free_palettes(&gpd->palettes);
}
@@ -680,6 +680,11 @@ void BKE_gpencil_copy_data(Main *UNUSED(bmain), bGPdata *gpd_dst, const bGPdata
/* cache data is not duplicated */
gpd_dst->batch_cache_data = NULL;
+ /* duplicate material array */
+ if (gpd_src->mat) {
+ gpd_dst->mat = MEM_dupallocN(gpd_src->mat);
+ }
+
/* copy layers */
BLI_listbase_clear(&gpd_dst->layers);
for (const bGPDlayer *gpl_src = gpd_src->layers.first; gpl_src; gpl_src = gpl_src->next) {
More information about the Bf-blender-cvs
mailing list