[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44620] trunk/blender/source/blender/bmesh /intern: fix for leak in bmesh edge split - assert when invalid args are given rather then returning NULL .

Campbell Barton ideasman42 at gmail.com
Sat Mar 3 15:49:01 CET 2012


Revision: 44620
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44620
Author:   campbellbarton
Date:     2012-03-03 14:48:50 +0000 (Sat, 03 Mar 2012)
Log Message:
-----------
fix for leak in bmesh edge split - assert when invalid args are given rather then returning NULL.

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

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_core.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_core.c	2012-03-03 12:49:03 UTC (rev 44619)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_core.c	2012-03-03 14:48:50 UTC (rev 44620)
@@ -1225,9 +1225,8 @@
 	BMVert *nv, *ov;
 	int i, edok, valence1 = 0, valence2 = 0;
 
-	if (bmesh_vert_in_edge(e, tv) == 0) {
-		return NULL;
-	}
+	BLI_assert(bmesh_vert_in_edge(e, tv) != FALSE);
+
 	ov = bmesh_edge_other_vert_get(e, tv);
 
 	/* count valence of v1 */

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-03-03 12:49:03 UTC (rev 44619)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mods.c	2012-03-03 14:48:50 UTC (rev 44620)
@@ -544,6 +544,7 @@
 	BMEdge *e_dummy;
 	BLI_array_staticdeclare(oldfaces, 32);
 	SmallHash hash;
+	const int do_mdisp = (e->l && CustomData_has_layer(&bm->ldata, CD_MDISPS));
 
 	/* we need this for handling multire */
 	if (!r_e) {
@@ -551,7 +552,7 @@
 	}
 
 	/* do we have a multires layer */
-	if (CustomData_has_layer(&bm->ldata, CD_MDISPS) && e->l) {
+	if (do_mdisp) {
 		BMLoop *l;
 		int i;
 		
@@ -572,10 +573,9 @@
 
 	v2 = bmesh_edge_other_vert_get(e, v);
 	nv = bmesh_semv(bm, v, e, r_e);
-	if (nv == NULL) {
-		return NULL;
-	}
 
+	BLI_assert(nv != NULL);
+
 	sub_v3_v3v3(nv->co, v2->co, v->co);
 	madd_v3_v3v3fl(nv->co, v->co, nv->co, percent);
 
@@ -588,7 +588,7 @@
 	BM_data_interp_face_vert_edge(bm, v2, v, nv, e, percent);
 	BM_data_interp_from_verts(bm, v, v2, nv, percent);
 
-	if (CustomData_has_layer(&bm->ldata, CD_MDISPS) && e->l && nv) {
+	if (do_mdisp) {
 		int i, j;
 
 		/* interpolate new/changed loop data from copied old face */
@@ -645,7 +645,7 @@
 		BLI_array_free(oldfaces);
 		BLI_smallhash_release(&hash);
 	}
-	
+
 	return nv;
 }
 
@@ -724,7 +724,7 @@
 		lb = BM_face_other_vert_loop(e->v2, fb, e->v1);
 
 		/* check that the next vert in both faces isnt the same
-		 * (ie - the next edge doesnt sharwe the same faces).
+		 * (ie - the next edge doesnt share the same faces).
 		 * since we can't rotate usefully in this case. */
 		if (la->v == lb->v) {
 			return FALSE;




More information about the Bf-blender-cvs mailing list