diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-11-20 00:14:49 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-11-20 00:22:44 +0300 |
commit | 410ca0ed92b8922d11499208c2da9a52ffde18e1 (patch) | |
tree | 22334b76a39f746986d38a1e21d220fa1ba27757 /source/blender/bmesh | |
parent | 29d9140fcee26b9c1df31022294f5f6f89f5dbeb (diff) |
Recent change to bmesh_jekv caused assert
Note that the mesh was valid, this just stops the radial check from failing.
Diffstat (limited to 'source/blender/bmesh')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_core.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index f82b09d48ae..17e3cf6ea4c 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -1744,6 +1744,8 @@ BMEdge *bmesh_jekv( } else { BMEdge *e_splice; + BLI_SMALLSTACK_DECLARE(faces_degenerate, BMFace *); + BMLoop *l_kill_next; #ifndef NDEBUG /* For verification later, count valence of v_old and tv */ @@ -1765,8 +1767,7 @@ BMEdge *bmesh_jekv( radlen = bmesh_radial_length(e_kill->l); #endif if (e_kill->l) { - BLI_SMALLSTACK_DECLARE(faces_degenerate, BMFace *); - BMLoop *l_kill_next; + /* fix the neighboring loops of all loops in e_kill's radial cycle */ l_kill = e_kill->l; @@ -1800,12 +1801,6 @@ BMEdge *bmesh_jekv( edok = bmesh_radial_validate(radlen, e_old->l); BMESH_ASSERT(edok != false); #endif - if (kill_degenerate_faces) { - BMFace *f_kill; - while ((f_kill = BLI_SMALLSTACK_POP(faces_degenerate))) { - BM_face_kill(bm, f_kill); - } - } } /* deallocate edge */ bm_kill_only_edge(bm, e_kill); @@ -1839,7 +1834,6 @@ BMEdge *bmesh_jekv( BM_CHECK_ELEMENT(l->f); } #endif - if (check_edge_double) { if (e_splice) { /* removes e_splice */ @@ -1847,6 +1841,13 @@ BMEdge *bmesh_jekv( } } + if (kill_degenerate_faces) { + BMFace *f_kill; + while ((f_kill = BLI_SMALLSTACK_POP(faces_degenerate))) { + BM_face_kill(bm, f_kill); + } + } + BM_CHECK_ELEMENT(v_old); BM_CHECK_ELEMENT(tv); BM_CHECK_ELEMENT(e_old); |