From 534c0af4d39f692c1ee3eb7116c2b5fe909bc134 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 5 Nov 2015 19:07:22 +1100 Subject: Fix BMesh memory leak w/ multires data --- source/blender/bmesh/intern/bmesh_core.c | 3 +++ source/blender/bmesh/operators/bmo_inset.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/source/blender/bmesh/intern/bmesh_core.c b/source/blender/bmesh/intern/bmesh_core.c index dfa78f611c4..4e178686144 100644 --- a/source/blender/bmesh/intern/bmesh_core.c +++ b/source/blender/bmesh/intern/bmesh_core.c @@ -247,6 +247,9 @@ static BMLoop *bm_loop_create( if (!(create_flag & BM_CREATE_SKIP_CD)) { if (l_example) { + /* no need to copy attrs, just handle customdata */ + // BM_elem_attrs_copy(bm, bm, l_example, l); + CustomData_bmesh_free_block_data(&bm->ldata, l->head.data); CustomData_bmesh_copy_data(&bm->ldata, &bm->ldata, l_example->head.data, &l->head.data); } else { diff --git a/source/blender/bmesh/operators/bmo_inset.c b/source/blender/bmesh/operators/bmo_inset.c index 118a19d3082..7bdf7db69ad 100644 --- a/source/blender/bmesh/operators/bmo_inset.c +++ b/source/blender/bmesh/operators/bmo_inset.c @@ -1095,6 +1095,8 @@ void bmo_inset_region_exec(BMesh *bm, BMOperator *op) InterpFace *iface = iface_array[BM_elem_index_get(es->l->f)]; const int i_a = BM_elem_index_get(l_a_other); const int i_b = BM_elem_index_get(l_b_other); + CustomData_bmesh_free_block_data(&bm->ldata, l_b->head.data); + CustomData_bmesh_free_block_data(&bm->ldata, l_a->head.data); CustomData_bmesh_copy_data(&bm->ldata, &bm->ldata, iface->blocks_l[i_a], &l_b->head.data); CustomData_bmesh_copy_data(&bm->ldata, &bm->ldata, iface->blocks_l[i_b], &l_a->head.data); -- cgit v1.2.3