Minor code cleanup: Don't reference previous BMwEdgeringWalker after BMW_state_remove. Its memory is freed on that call.
This commit is contained in:
@@ -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) &&
|
||||
|
||||
Reference in New Issue
Block a user