[Bf-blender-cvs] [af2d2d4dff7] master: Fix T58221: Spin tool w/ merge first/last crashes

Campbell Barton noreply at git.blender.org
Tue Feb 5 03:26:20 CET 2019


Commit: af2d2d4dff77a1436b26007b5aa183075d91d537
Author: Campbell Barton
Date:   Tue Feb 5 13:25:55 2019 +1100
Branches: master
https://developer.blender.org/rBaf2d2d4dff77a1436b26007b5aa183075d91d537

Fix T58221: Spin tool w/ merge first/last crashes

Spinning geometry that included non boundary/wire edges
crashed when merge first/last enabled.

===================================================================

M	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 5129212f49b..3a07c81129f 100644
--- a/source/blender/bmesh/operators/bmo_dupe.c
+++ b/source/blender/bmesh/operators/bmo_dupe.c
@@ -550,13 +550,14 @@ void bmo_spin_exec(BMesh *bm, BMOperator *op)
 					if (elem_array[i]->head.htype == BM_EDGE) {
 						BMEdge *e_src = (BMEdge *)elem_array[i];
 						BMEdge *e_dst = BM_edge_find_double(e_src);
-						BM_edge_splice(bm, e_dst, e_src);
-						elem_array_len--;
-						elem_array[i] = elem_array[elem_array_len];
-					}
-					else {
-						i++;
+						if (e_dst != NULL) {
+							BM_edge_splice(bm, e_dst, e_src);
+							elem_array_len--;
+							elem_array[i] = elem_array[elem_array_len];
+							continue;
+						}
 					}
+					i++;
 				}
 				/* Full copies of faces may cause overlap. */
 				for (int i = 0; i < elem_array_len; ) {



More information about the Bf-blender-cvs mailing list