diff options
Diffstat (limited to 'source/blender/editors/mesh/editmesh_undo.cc')
-rw-r--r-- | source/blender/editors/mesh/editmesh_undo.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/editors/mesh/editmesh_undo.cc b/source/blender/editors/mesh/editmesh_undo.cc index f5056021f7d..5c837e61a79 100644 --- a/source/blender/editors/mesh/editmesh_undo.cc +++ b/source/blender/editors/mesh/editmesh_undo.cc @@ -101,7 +101,7 @@ struct UndoMesh { int shapenr; #ifdef USE_ARRAY_STORE - /* N`ull arrays are considered empty */ + /* Null arrays are considered empty. */ struct { /* most data is stored as 'custom' data */ BArrayCustomData *vdata, *edata, *ldata, *pdata; BArrayState **keyblocks; @@ -231,7 +231,7 @@ static void um_arraystore_cd_compact(CustomData *cdata, } bcd->states[i] = BLI_array_store_state_add( - bs, layer->data, (size_t)data_len * stride, state_reference); + bs, layer->data, size_t(data_len) * stride, state_reference); } else { bcd->states[i] = nullptr; @@ -334,7 +334,7 @@ static void um_arraystore_compact_ex(UndoMesh *um, const UndoMesh *um_ref, bool um_ref->store.keyblocks[i] : nullptr; um->store.keyblocks[i] = BLI_array_store_state_add( - bs, keyblock->data, (size_t)keyblock->totelem * stride, state_reference); + bs, keyblock->data, size_t(keyblock->totelem) * stride, state_reference); } if (keyblock->data) { @@ -352,7 +352,7 @@ static void um_arraystore_compact_ex(UndoMesh *um, const UndoMesh *um_ref, bool BArrayStore *bs = BLI_array_store_at_size_ensure( &um_arraystore.bs_stride, stride, ARRAY_CHUNK_SIZE); um->store.mselect = BLI_array_store_state_add( - bs, me->mselect, (size_t)me->totselect * stride, state_reference); + bs, me->mselect, size_t(me->totselect) * stride, state_reference); } /* keep me->totselect for validation */ @@ -597,6 +597,11 @@ static void *undomesh_from_editmesh(UndoMesh *um, BMEditMesh *em, Key *key, Undo * on it. Necessary to use the attribute API. */ strcpy(um->me.id.name, "MEundomesh_from_editmesh"); + /* Runtime data is necessary for some asserts in other code, and the overhead of creating it for + * undo meshes should be low. */ + BLI_assert(um->me.runtime == nullptr); + um->me.runtime = new blender::bke::MeshRuntime(); + CustomData_MeshMasks cd_mask_extra{}; cd_mask_extra.vmask = CD_MASK_SHAPE_KEYINDEX; BMeshToMeshParams params{}; |