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) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to