[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47083] branches/meshdata_transfer/source/ blender/editors/object/object_vgroup.c: Fixed iterators.

Ove Murberg Henriksen sorayasilvermoon at hotmail.com
Sun May 27 19:34:10 CEST 2012


Revision: 47083
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47083
Author:   cyborgmuppet
Date:     2012-05-27 17:34:10 +0000 (Sun, 27 May 2012)
Log Message:
-----------
Fixed iterators. 
Memory bugs persist... 

Modified Paths:
--------------
    branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c

Modified: branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c
===================================================================
--- branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c	2012-05-27 16:59:36 UTC (rev 47082)
+++ branches/meshdata_transfer/source/blender/editors/object/object_vgroup.c	2012-05-27 17:34:10 UTC (rev 47083)
@@ -441,7 +441,7 @@
 	Mesh *me_dst;
 	DerivedMesh *dmesh_src;
 	BVHTreeFromMesh tree_mesh_vertices_src, tree_mesh_faces_src = {NULL};
-	MDeformVert **dv_array_src, **dv_array_dst;
+	MDeformVert **dv_array_src, **dv_array_dst, **dv_src, **dv_dst;
 	MVert *mv_dst, *mv_src;
 	MFace *mface_src;
 	BVHTreeNearest nearest;
@@ -490,7 +490,7 @@
 			}
 
 			/* loop through the vertices*/
-			for (i = 0; i < dv_tot_dst; i++, dv_array_src++, dv_array_dst++, mv_dst++) {
+			for(i = 0, dv_src = dv_array_src, dv_dst = dv_array_dst; i < me_dst->totvert; i++, dv_dst++, dv_src++, mv_src++) {
 
 				/*copy weight*/
 				dw_src = defvert_verify_index(*dv_array_src, index_src);
@@ -503,8 +503,8 @@
 			/*make node tree*/
 			bvhtree_from_mesh_verts(&tree_mesh_vertices_src, dmesh_src, 0.0, 2, 6);
 
-			/* loop through the vertices*/
-			for (i = 0; i < me_dst->totvert; i++, mv_dst++, dv_array_dst++) {
+			/* loop trough vertices*/
+			for(i = 0, dv_dst = dv_array_dst; i < me_dst->totvert; i++, dv_dst++, mv_src++){
 
 				/*reset nearest*/
 				/*nearest.index = -1; It is asumed using index of previous search as starting point result in speedup. It will be tested later*/
@@ -536,7 +536,7 @@
 			bvhtree_from_mesh_faces(&tree_mesh_faces_src, dmesh_src, 0.0, 2, 6);
 
 			/* loop through the vertices*/
-			for (i = 0; i < me_dst->totvert; i++, mv_dst++, dv_array_dst++) {
+			for(i = 0, dv_dst = dv_array_dst; i < me_dst->totvert; i++, dv_dst++, mv_src++) {
 
 				/*reset nearest*/
 				/*nearest.index = -1; It is asumed using index of previous search as starting point result in speedup. It will be tested later*/
@@ -552,8 +552,8 @@
 
 				/*project onto face*/
 				normal_tri_v3(normal, mv_src[mface_src[nearest.index].v1].co,
-				              mv_src[mface_src[nearest.index].v2].co,
-				              mv_src[mface_src[nearest.index].v3].co);
+				              mv_src[mface_src[index_nearest].v2].co,
+				              mv_src[mface_src[index_nearest].v3].co);
 
 				project_v3_plane(tmp_co, normal, mv_src[mface_src[index_nearest].v1].co);
 
@@ -589,7 +589,7 @@
 			bvhtree_from_mesh_faces(&tree_mesh_faces_src, dmesh_src, 0.0, 2, 6);
 
 			/*loop through the vertices*/
-			for (i = 0; i < me_dst->totvert; i++, mv_dst++, dv_array_dst++) {
+			for(i = 0, dv_dst = dv_array_dst; i < me_dst->totvert; i++, dv_src++, mv_src++){
 
 				/*reset nearest*/
 				/*nearest.index = -1; It is asumed using index of previous search as starting point result in speedup. It will be tested later*/
@@ -630,10 +630,12 @@
 			break;
 	}
 
-	/*free memory*/
+	/*free memory*//*TODO must free wehn function breaks on return 0 as well, right?*/
 	if (mface_src) MEM_freeN(mface_src);
 	if (dv_array_src) MEM_freeN(dv_array_src);
 	if (dv_array_dst) MEM_freeN(dv_array_dst);
+	if (dv_src) MEM_freeN(dv_src);
+	if (dv_dst) MEM_freeN(dv_dst);
 
 	return 1;
 }




More information about the Bf-blender-cvs mailing list