[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50841] trunk/blender/source/blender/ editors/transform: fix for memory leak grabbing masks and grease pencil in the dope sheet.

Campbell Barton ideasman42 at gmail.com
Mon Sep 24 03:50:29 CEST 2012


Revision: 50841
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50841
Author:   campbellbarton
Date:     2012-09-24 01:50:26 +0000 (Mon, 24 Sep 2012)
Log Message:
-----------
fix for memory leak grabbing masks and grease pencil in the dope sheet. (also NULL after freeing)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/editors/transform/transform_generics.c

Modified: trunk/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_conversions.c	2012-09-24 01:36:31 UTC (rev 50840)
+++ trunk/blender/source/blender/editors/transform/transform_conversions.c	2012-09-24 01:50:26 UTC (rev 50841)
@@ -3292,15 +3292,19 @@
 	if (ELEM(ac.datatype, ANIMCONT_GPENCIL, ANIMCONT_MASK)) {
 		if (t->mode == TFM_TIME_SLIDE) {
 			t->customData = MEM_callocN((sizeof(float) * 2) + (sizeof(tGPFtransdata) * count), "TimeSlide + tGPFtransdata");
+			t->flag |= T_FREE_CUSTOMDATA;
 			tfd = (tGPFtransdata *)((float *)(t->customData) + 2);
 		}
 		else {
 			t->customData = MEM_callocN(sizeof(tGPFtransdata) * count, "tGPFtransdata");
+			t->flag |= T_FREE_CUSTOMDATA;
 			tfd = (tGPFtransdata *)(t->customData);
 		}
 	}
-	else if (t->mode == TFM_TIME_SLIDE)
+	else if (t->mode == TFM_TIME_SLIDE) {
 		t->customData = MEM_callocN(sizeof(float) * 2, "TimeSlide Min/Max");
+		t->flag |= T_FREE_CUSTOMDATA;
+	}
 	
 	/* loop 2: build transdata array */
 	for (ale = anim_data.first; ale; ale = ale->next) {
@@ -5762,6 +5766,7 @@
 			MEM_freeN(tdt->smarkers);
 
 		MEM_freeN(tdt);
+		t->customData = NULL;
 	}
 }
 

Modified: trunk/blender/source/blender/editors/transform/transform_generics.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_generics.c	2012-09-24 01:36:31 UTC (rev 50840)
+++ trunk/blender/source/blender/editors/transform/transform_generics.c	2012-09-24 01:50:26 UTC (rev 50841)
@@ -1293,9 +1293,11 @@
 	if (t->customFree) {
 		/* Can take over freeing t->data and data2d etc... */
 		t->customFree(t);
+		BLI_assert(t->customData == NULL);
 	}
 	else if ((t->customData != NULL) && (t->flag & T_FREE_CUSTOMDATA)) {
 		MEM_freeN(t->customData);
+		t->customData = NULL;
 	}
 
 	/* postTrans can be called when nothing is selected, so data is NULL already */




More information about the Bf-blender-cvs mailing list