diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-06 01:17:24 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-06 01:17:24 +0400 |
commit | bd83487dab6e4be5facf9fefb476a4273c64e1df (patch) | |
tree | d9830dc6cb286f6e31c63258736428d45377657a /source/blender/modifiers | |
parent | 1ae27144f665efeed0b9cd0f07fbe50a25b494d4 (diff) |
fix [#30459] BMesh Edge Split Hangs.
edge split result is still not correct in this case but at least avoid eternal loop.
also - dont tag sharp edges with <2 faces for splitting.
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r-- | source/blender/modifiers/intern/MOD_edgesplit.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c index 1e275862b5c..c9831959adb 100644 --- a/source/blender/modifiers/intern/MOD_edgesplit.c +++ b/source/blender/modifiers/intern/MOD_edgesplit.c @@ -88,8 +88,13 @@ static DerivedMesh *doEdgeSplit(DerivedMesh *dm, EdgeSplitModifierData *emd, Obj if (emd->flags & MOD_EDGESPLIT_FROMFLAG) { BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) { - if (!BM_elem_flag_test(e, BM_ELEM_SMOOTH)) { - BMO_elem_flag_enable(bm, e, EDGE_MARK); + /* check for 2 or more edge users */ + if ((e->l) && + (e->l->next != e->l)) + { + if (!BM_elem_flag_test(e, BM_ELEM_SMOOTH)) { + BMO_elem_flag_enable(bm, e, EDGE_MARK); + } } } } |