diff options
-rw-r--r-- | source/blender/bmesh/operators/bmo_utils.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/source/blender/bmesh/operators/bmo_utils.c b/source/blender/bmesh/operators/bmo_utils.c index c89fee71cbc..600386893dd 100644 --- a/source/blender/bmesh/operators/bmo_utils.c +++ b/source/blender/bmesh/operators/bmo_utils.c @@ -145,19 +145,23 @@ void bmo_rotate_edges_exec(BMesh *bm, BMOperator *op) BMO_elem_flag_test(bm, fb, FACE_TAINT) == false) { + /* don't touch again (faces will be freed so run before rotating the edge) */ + BMO_elem_flag_enable(bm, fa, FACE_TAINT); + BMO_elem_flag_enable(bm, fb, FACE_TAINT); + if (!(e2 = BM_edge_rotate(bm, e, use_ccw, check_flag))) { + + BMO_elem_flag_disable(bm, fa, FACE_TAINT); + BMO_elem_flag_disable(bm, fb, FACE_TAINT); #if 0 BMO_error_raise(bm, op, BMERR_INVALID_SELECTION, "Could not rotate edge"); return; #endif + continue; } BMO_elem_flag_enable(bm, e2, EDGE_OUT); - - /* don't touch again */ - BMO_elem_flag_enable(bm, fa, FACE_TAINT); - BMO_elem_flag_enable(bm, fb, FACE_TAINT); } } } |