[Bf-blender-cvs] [94d19d5ff50] master: GPencil: Fix unreported memory leak

Antonio Vazquez noreply at git.blender.org
Tue Jan 7 14:14:31 CET 2020


Commit: 94d19d5ff505af0b63085ec76b85f86dcd97b127
Author: Antonio Vazquez
Date:   Tue Jan 7 14:13:37 2020 +0100
Branches: master
https://developer.blender.org/rB94d19d5ff505af0b63085ec76b85f86dcd97b127

GPencil: Fix unreported memory leak

Thanks to @dfelinto for his help

===================================================================

M	source/blender/blenkernel/intern/gpencil_modifier.c
M	source/blender/draw/engines/gpencil/gpencil_cache_utils.c

===================================================================

diff --git a/source/blender/blenkernel/intern/gpencil_modifier.c b/source/blender/blenkernel/intern/gpencil_modifier.c
index fe087256d25..bc0c54ed96e 100644
--- a/source/blender/blenkernel/intern/gpencil_modifier.c
+++ b/source/blender/blenkernel/intern/gpencil_modifier.c
@@ -862,6 +862,14 @@ void BKE_gpencil_modifiers_calc(Depsgraph *depsgraph, Scene *scene, Object *ob)
   const bool time_remap = BKE_gpencil_has_time_modifiers(ob);
   int cfra_eval = (int)DEG_get_ctime(depsgraph);
 
+  /* Clear any previous evaluated data. */
+  if (ob->runtime.gpencil_tot_layers > 0) {
+    for (int i = 0; i < ob->runtime.gpencil_tot_layers; i++) {
+      bGPDframe *gpf_eval = &ob->runtime.gpencil_evaluated_frames[i];
+      BKE_gpencil_free_frame_runtime_data(gpf_eval);
+    }
+  }
+
   /* Create array of evaluated frames equal to number of layers. */
   ob->runtime.gpencil_tot_layers = BLI_listbase_count(&gpd->layers);
   CLAMP_MIN(ob->runtime.gpencil_tot_layers, 1);
diff --git a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
index f9df1342bf8..f21d96a304c 100644
--- a/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_cache_utils.c
@@ -349,7 +349,6 @@ void DRW_gpencil_freecache(struct Object *ob)
   for (int i = 0; i < ob->runtime.gpencil_tot_layers; i++) {
     bGPDframe *gpf_eval = &ob->runtime.gpencil_evaluated_frames[i];
     BKE_gpencil_free_frame_runtime_data(gpf_eval);
-    gpf_eval = NULL;
   }
 
   ob->runtime.gpencil_tot_layers = 0;



More information about the Bf-blender-cvs mailing list