[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45570] trunk/blender/source/blender/bmesh /intern/bmesh_walkers_impl.c: Minor code cleanup: Don' t reference previous BMwEdgeringWalker after BMW_state_remove.

Antony Riakiotakis kalast at gmail.com
Thu Apr 12 14:11:22 CEST 2012


Revision: 45570
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45570
Author:   psy-fi
Date:     2012-04-12 12:11:21 +0000 (Thu, 12 Apr 2012)
Log Message:
-----------
Minor code cleanup: Don't reference previous BMwEdgeringWalker after BMW_state_remove. Its memory is freed on that call.

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

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-04-12 12:03:12 UTC (rev 45569)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c	2012-04-12 12:11:21 UTC (rev 45570)
@@ -837,8 +837,8 @@
 static void *bmw_EdgeringWalker_step(BMWalker *walker)
 {
 	BMwEdgeringWalker *lwalk = BMW_current_state(walker);
-	BMEdge *e;
-	BMLoop *l = lwalk->l /* , *origl = lwalk->l */;
+	BMEdge *e, *wireedge = lwalk->wireedge;
+	BMLoop *l = lwalk->l , *origl = lwalk->l;
 #ifdef BMW_EDGERING_NGON
 	int i, len;
 #endif
@@ -848,7 +848,7 @@
 	BMW_state_remove(walker);
 
 	if (!l)
-		return lwalk->wireedge;
+		return wireedge;
 
 	e = l->e;
 	if (!EDGE_CHECK(e)) {
@@ -868,8 +868,10 @@
 		i -= 2;
 	}
 
-	if ((len <= 0) || (len % 2 != 0) || !EDGE_CHECK(l->e)) {
-		l = lwalk->l;
+	if ((len <= 0) || (len % 2 != 0) || !EDGE_CHECK(l->e) ||
+		!bmw_mask_check_face(walker, l->f))
+	{
+		l = origl;
 		i = len;
 		while (i > 0) {
 			l = l->next;
@@ -886,7 +888,7 @@
 	l = l->next->next;
 	
 	if ((l->f->len != 4) || !EDGE_CHECK(l->e) || !bmw_mask_check_face(walker, l->f)) {
-		l = lwalk->l->next->next;
+		l = origl->next->next;
 	}
 	/* only walk to manifold edge */
 	if ((l->f->len == 4) && EDGE_CHECK(l->e) &&




More information about the Bf-blender-cvs mailing list