diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2012-04-12 16:11:21 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2012-04-12 16:11:21 +0400 |
commit | b3bca9d252a0db7a157d4debf35dba4f8afe79af (patch) | |
tree | e7b49eeb0070a8d06be601768f271093db27c05e /source | |
parent | 7004f929b99a8ff4ee546e4c303de9ebaf89eda5 (diff) |
Minor code cleanup: Don't reference previous BMwEdgeringWalker after BMW_state_remove. Its memory is freed on that call.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_walkers_impl.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/bmesh/intern/bmesh_walkers_impl.c b/source/blender/bmesh/intern/bmesh_walkers_impl.c index e04b3dd0d01..ae7294ed4b6 100644 --- a/source/blender/bmesh/intern/bmesh_walkers_impl.c +++ b/source/blender/bmesh/intern/bmesh_walkers_impl.c @@ -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) && |