From d24cfa329b221cae4a6e7ecc4d0e4ea778ac5c71 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 6 Dec 2018 14:50:25 +1100 Subject: Fix T58832: Spin tool creates duplicate faces --- source/blender/bmesh/operators/bmo_dupe.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source/blender/bmesh/operators/bmo_dupe.c') diff --git a/source/blender/bmesh/operators/bmo_dupe.c b/source/blender/bmesh/operators/bmo_dupe.c index c50c7657deb..77019e13969 100644 --- a/source/blender/bmesh/operators/bmo_dupe.c +++ b/source/blender/bmesh/operators/bmo_dupe.c @@ -564,6 +564,21 @@ void bmo_spin_exec(BMesh *bm, BMOperator *op) i++; } } + /* Full copies of faces may cause overlap. */ + for (int i = 0; i < elem_array_len; ) { + if (elem_array[i]->head.htype == BM_FACE) { + BMFace *f_src = (BMFace *)elem_array[i]; + BMFace *f_dst = BM_face_find_double(f_src); + if (f_dst != NULL) { + BM_face_kill(bm, f_src); + elem_array_len--; + elem_array[i] = elem_array[elem_array_len]; + } + } + else { + i++; + } + } slot_geom_out->len = elem_array_len; } BMO_op_finish(bm, &extop); -- cgit v1.2.3