Minor code cleanup: Don't reference previous BMwEdgeringWalker after BMW_state_remove. Its memory is freed on that call.

This commit is contained in:
Antony Riakiotakis
2012-04-12 12:11:21 +00:00
parent 7004f929b9
commit b3bca9d252

View File

@@ -837,8 +837,8 @@ static void *bmw_EdgeringWalker_yield(BMWalker *walker)
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 @@ static void *bmw_EdgeringWalker_step(BMWalker *walker)
BMW_state_remove(walker);
if (!l)
return lwalk->wireedge;
return wireedge;
e = l->e;
if (!EDGE_CHECK(e)) {
@@ -868,8 +868,10 @@ static void *bmw_EdgeringWalker_step(BMWalker *walker)
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 @@ static void *bmw_EdgeringWalker_step(BMWalker *walker)
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) &&