diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-12-06 06:50:25 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-12-06 06:52:55 +0300 |
commit | d24cfa329b221cae4a6e7ecc4d0e4ea778ac5c71 (patch) | |
tree | 7f143391b5c812d368ab29ca2c3469dff19df9f6 /source/blender/bmesh/operators/bmo_dupe.c | |
parent | f6c615a8c287183b59884a24065273f35cb7a578 (diff) |
Fix T58832: Spin tool creates duplicate faces
Diffstat (limited to 'source/blender/bmesh/operators/bmo_dupe.c')
-rw-r--r-- | source/blender/bmesh/operators/bmo_dupe.c | 15 |
1 files changed, 15 insertions, 0 deletions
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); |