[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53147] trunk/blender/source/blender/bmesh /intern/bmesh_construct.c: fix [#33606] Adding the Decimate modifier will crash Blender

Campbell Barton ideasman42 at gmail.com
Wed Dec 19 02:24:15 CET 2012


Revision: 53147
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53147
Author:   campbellbarton
Date:     2012-12-19 01:24:12 +0000 (Wed, 19 Dec 2012)
Log Message:
-----------
fix [#33606] Adding the Decimate modifier will crash Blender

own regression since 2.65 release.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_construct.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-12-18 21:19:15 UTC (rev 53146)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_construct.c	2012-12-19 01:24:12 UTC (rev 53147)
@@ -173,8 +173,8 @@
  */
 BMFace *BM_face_create_ngon(BMesh *bm, BMVert *v1, BMVert *v2, BMEdge **edges, int len, const int create_flag)
 {
-	BMEdge **edges2 = BLI_array_alloca_and_count(edges2, len);
-	BMVert **verts = BLI_array_alloca_and_count(verts, len + 1);
+	BMEdge **edges2 = BLI_array_alloca(edges2, len);
+	BMVert **verts = BLI_array_alloca(verts, len + 1);
 	int e2_index = 0;
 	int v_index = 0;
 
@@ -235,7 +235,7 @@
 		e = e2;
 	} while (e != edges[0]);
 
-	if (BLI_array_count(edges2) != len) {
+	if (e2_index != len) {
 		goto err; /* we didn't use all edges in forming the boundary loop */
 	}
 
@@ -296,11 +296,10 @@
 err:
 	for (i = 0; i < len; i++) {
 		BM_ELEM_API_FLAG_DISABLE(edges[i], _FLAG_MF);
-		/* vert count may != len */
-		if (i < BLI_array_count(verts)) {
-			BM_ELEM_API_FLAG_DISABLE(verts[i], _FLAG_MV);
-		}
 	}
+	for (i = 0; i < v_index; i++) {
+		BM_ELEM_API_FLAG_DISABLE(verts[i], _FLAG_MV);
+	}
 
 	return NULL;
 }




More information about the Bf-blender-cvs mailing list