[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35744] trunk/blender/source/blender/ editors/animation/fmodifier_ui.c: fix for incorrect array use when freeing fcurve modifier envelope points, array also wasnt NULL'd on freeing which gave memory errors later on.

Campbell Barton ideasman42 at gmail.com
Thu Mar 24 10:59:02 CET 2011


Revision: 35744
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35744
Author:   campbellbarton
Date:     2011-03-24 09:59:02 +0000 (Thu, 24 Mar 2011)
Log Message:
-----------
fix for incorrect array use when freeing fcurve modifier envelope points, array also wasnt NULL'd on freeing which gave memory errors later on.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/fmodifier_ui.c

Modified: trunk/blender/source/blender/editors/animation/fmodifier_ui.c
===================================================================
--- trunk/blender/source/blender/editors/animation/fmodifier_ui.c	2011-03-24 09:53:39 UTC (rev 35743)
+++ trunk/blender/source/blender/editors/animation/fmodifier_ui.c	2011-03-24 09:59:02 UTC (rev 35744)
@@ -443,10 +443,10 @@
 	if (env->totvert > 1) {
 		/* allocate a new smaller array */
 		fedn= MEM_callocN(sizeof(FCM_EnvelopeData)*(env->totvert-1), "FCM_EnvelopeData");
+
+		memcpy(fedn, env->data, sizeof(FCM_EnvelopeData)*(index));
+		memcpy(fedn + index, env->data + (index + 1), sizeof(FCM_EnvelopeData)*((env->totvert - index)-1));
 		
-		memcpy(fedn, &env->data, sizeof(FCM_EnvelopeData)*(index));
-		memcpy(&fedn[index], &env->data[index+1], sizeof(FCM_EnvelopeData)*(env->totvert-index-1));
-		
 		/* free old array, and set the new */
 		MEM_freeN(env->data);
 		env->data= fedn;
@@ -454,8 +454,10 @@
 	}
 	else {
 		/* just free array, since the only vert was deleted */
-		if (env->data) 
+		if (env->data) {
 			MEM_freeN(env->data);
+			env->data= NULL;
+		}
 		env->totvert= 0;
 	}
 }




More information about the Bf-blender-cvs mailing list