[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54447] trunk/blender/source/blender/ editors/transform/transform_input.c: fix for memory leak in transform when changing transform modes within transform

Campbell Barton ideasman42 at gmail.com
Mon Feb 11 03:06:20 CET 2013


Revision: 54447
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54447
Author:   campbellbarton
Date:     2013-02-11 02:06:19 +0000 (Mon, 11 Feb 2013)
Log Message:
-----------
fix for memory leak in transform when changing transform modes within transform
(if you held down the R-key for example).

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

Modified: trunk/blender/source/blender/editors/transform/transform_input.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_input.c	2013-02-11 01:55:58 UTC (rev 54446)
+++ trunk/blender/source/blender/editors/transform/transform_input.c	2013-02-11 02:06:19 UTC (rev 54447)
@@ -307,15 +307,8 @@
 
 void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode)
 {
-	/* may have been allocated previously */
-	/* TODO, holding R-key can cause mem leak, but this causes [#28903]
-	 * disable for now. */
-#if 0
-	if (mi->data) {
-		MEM_freeN(mi->data);
-		mi->data = NULL;
-	}
-#endif
+	/* incase we allocate a new value */
+	void *mi_data_prev = mi->data;
 
 	switch (mode) {
 		case INPUT_VECTOR:
@@ -374,6 +367,12 @@
 			break;
 	}
 
+	/* if we've allocated new data, free the old data
+	 * less hassle then checking before every alloc above */
+	if (mi_data_prev && (mi_data_prev != mi->data)) {
+		MEM_freeN(mi_data_prev);
+	}
+
 	/* bootstrap mouse input with initial values */
 	applyMouseInput(t, mi, mi->imval, t->values);
 }




More information about the Bf-blender-cvs mailing list