[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36649] branches/bmesh/blender/source/ blender: =bmesh=fixed shapekey mem leak

Joseph Eagar joeedh at gmail.com
Thu May 12 20:33:11 CEST 2011


Revision: 36649
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36649
Author:   joeedh
Date:     2011-05-12 18:33:10 +0000 (Thu, 12 May 2011)
Log Message:
-----------
=bmesh=fixed shapekey mem leak

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenlib/intern/scanfill.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c

Modified: branches/bmesh/blender/source/blender/blenlib/intern/scanfill.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/scanfill.c	2011-05-12 18:17:23 UTC (rev 36648)
+++ branches/bmesh/blender/source/blender/blenlib/intern/scanfill.c	2011-05-12 18:33:10 UTC (rev 36649)
@@ -172,8 +172,8 @@
 		/*reset the block we're keeping*/
 		BLI_addtail(&lb, first);
 		memset(first->data, 0, blocksize);
-		cur = first;
-		offs = 0;
+		cur= first;
+		offs= 0;
 
 		return NULL;	
 	}

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2011-05-12 18:17:23 UTC (rev 36648)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c	2011-05-12 18:33:10 UTC (rev 36649)
@@ -78,8 +78,6 @@
 		CustomData_set_layer_name(&bm->ldata, CD_MLOOPUV, i, bm->pdata.layers[li].name);
 	}
 	
-	CustomData_add_layer(&bm->vdata, CD_SHAPE_KEYINDEX, CD_ASSIGN, NULL, 0);
-
 	if (!CustomData_has_layer(&bm->edata, CD_CREASE))
 		CustomData_add_layer(&bm->edata, CD_CREASE, CD_ASSIGN, NULL, 0);
 
@@ -96,6 +94,8 @@
 
 	actkey = ob_get_keyblock(ob);
 	if(actkey && actkey->totelem == me->totvert) {
+		CustomData_add_layer(&bm->vdata, CD_SHAPE_KEYINDEX, CD_ASSIGN, NULL, 0);
+		
 		/*check if we need to generate unique ids for the shapekeys.
 		  this also exists in the file reading code, but is here for
 		  a sanity check*/
@@ -142,12 +142,12 @@
 		/*Copy Custom Data*/
 		CustomData_to_bmesh_block(&me->vdata, &bm->vdata, i, &v->head.data);
 
-		/*set shape key original index*/
-		keyi = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_SHAPE_KEYINDEX);
-		*keyi = i;
-
 		/*set shapekey data*/
 		if (me->key) {
+			/*set shape key original index*/
+			keyi = CustomData_bmesh_get(&bm->vdata, v->head.data, CD_SHAPE_KEYINDEX);
+			*keyi = i;
+			
 			for (block=me->key->block.first, j=0; block; block=block->next, j++) {
 				float *co = CustomData_bmesh_get_n(&bm->vdata, v->head.data, 
 				                                   CD_SHAPEKEY, j);

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c	2011-05-12 18:17:23 UTC (rev 36648)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c	2011-05-12 18:33:10 UTC (rev 36649)
@@ -613,6 +613,12 @@
 
 static void free_undo(void *umv)
 {
+	if (((Mesh*)umv)->key)
+	{
+		free_key(((Mesh*)umv)->key);
+		MEM_freeN(((Mesh*)umv)->key);
+	}
+	
 	free_mesh(umv, 0);
 	MEM_freeN(umv);
 }




More information about the Bf-blender-cvs mailing list