Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorAntony Riakiotakis <kalast@gmail.com>2012-04-12 16:11:21 +0400
committerAntony Riakiotakis <kalast@gmail.com>2012-04-12 16:11:21 +0400
commitb3bca9d252a0db7a157d4debf35dba4f8afe79af (patch)
treee7b49eeb0070a8d06be601768f271093db27c05e /source
parent7004f929b99a8ff4ee546e4c303de9ebaf89eda5 (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.c14
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) &&