[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