From beaa66bb13a5d801ec10957922b2d90e04ca5d7c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 16 Jan 2019 14:54:52 +1100 Subject: [PATCH] Fix T59640: Transform w/ auto-merge & hidden verts crashes --- source/blender/bmesh/intern/bmesh_operators.c | 7 ++++++- source/blender/editors/sculpt_paint/sculpt.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/bmesh/intern/bmesh_operators.c b/source/blender/bmesh/intern/bmesh_operators.c index 4bc09c173f6..60de182499b 100644 --- a/source/blender/bmesh/intern/bmesh_operators.c +++ b/source/blender/bmesh/intern/bmesh_operators.c @@ -1851,7 +1851,12 @@ bool BMO_op_vinitf(BMesh *bm, BMOperator *op, const int flag, const char *_fmt, BMO_slot_buffer_from_disabled_hflag(bm, op, op->slots_in, slot_name, htype, va_arg(vlist, int)); } else if (type == 'a') { - BMO_slot_buffer_from_all(bm, op, op->slots_in, slot_name, htype); + if ((op->flag & BMO_FLAG_RESPECT_HIDE) == 0) { + BMO_slot_buffer_from_all(bm, op, op->slots_in, slot_name, htype); + } + else { + BMO_slot_buffer_from_disabled_hflag(bm, op, op->slots_in, slot_name, htype, BM_ELEM_HIDDEN); + } } else if (type == 'f') { BMO_slot_buffer_from_enabled_flag(bm, op, op->slots_in, slot_name, htype, va_arg(vlist, int)); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 53c7d4aebbd..d7a2c38f340 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -5600,7 +5600,7 @@ static int sculpt_symmetrize_exec(bContext *C, wmOperator *UNUSED(op)) BM_mesh_toolflags_set(ss->bm, true); /* Symmetrize and re-triangulate */ - BMO_op_callf(ss->bm, BMO_FLAG_DEFAULTS, + BMO_op_callf(ss->bm, (BMO_FLAG_DEFAULTS & ~BMO_FLAG_RESPECT_HIDE), "symmetrize input=%avef direction=%i dist=%f", sd->symmetrize_direction, 0.00001f); sculpt_dynamic_topology_triangulate(ss->bm);