diff options
Diffstat (limited to 'source/blender/editors/mesh/editmesh_undo.c')
-rw-r--r-- | source/blender/editors/mesh/editmesh_undo.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/editors/mesh/editmesh_undo.c b/source/blender/editors/mesh/editmesh_undo.c index 9f625fd0515..43cad2db185 100644 --- a/source/blender/editors/mesh/editmesh_undo.c +++ b/source/blender/editors/mesh/editmesh_undo.c @@ -35,6 +35,7 @@ #include "BKE_editmesh.h" #include "BKE_key.h" #include "BKE_layer.h" +#include "BKE_lib_id.h" #include "BKE_main.h" #include "BKE_mesh.h" #include "BKE_undo_system.h" @@ -117,6 +118,7 @@ typedef struct UndoMesh { #ifdef USE_ARRAY_STORE +/* -------------------------------------------------------------------- */ /** \name Array Store * \{ */ @@ -508,7 +510,13 @@ static void *undomesh_from_editmesh(UndoMesh *um, BMEditMesh *em, Key *key) } #endif /* make sure shape keys work */ - um->me.key = key ? BKE_key_copy_nolib(key) : NULL; + if (key != NULL) { + um->me.key = (Key *)BKE_id_copy_ex( + NULL, &key->id, NULL, LIB_ID_COPY_LOCALIZE | LIB_ID_COPY_NO_ANIMDATA); + } + else { + um->me.key = NULL; + } /* BM_mesh_validate(em->bm); */ /* for troubleshooting */ |