From a5ded0720ccf1433d8316b44516866373042917e Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 20 Jul 2020 19:17:24 +0200 Subject: Fix (unreported) broken deletion of Shapekeys alongside their owner ID. Trying to get shape key pointer after having unlinked its owner from Main data-base is rather useless... So those shapekeys ended up never being deleted. --- source/blender/blenkernel/intern/lib_id_delete.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/lib_id_delete.c b/source/blender/blenkernel/intern/lib_id_delete.c index b4f2caac861..561db7d62c2 100644 --- a/source/blender/blenkernel/intern/lib_id_delete.c +++ b/source/blender/blenkernel/intern/lib_id_delete.c @@ -144,15 +144,14 @@ void BKE_id_free_ex(Main *bmain, void *idv, int flag, const bool use_flag_from_i } #endif + Key *key = ((flag & LIB_ID_FREE_NO_MAIN) == 0) ? BKE_key_from_id(id) : NULL; + if ((flag & LIB_ID_FREE_NO_USER_REFCOUNT) == 0) { BKE_libblock_relink_ex(bmain, id, NULL, NULL, 0); } - if ((flag & LIB_ID_FREE_NO_MAIN) == 0) { - Key *key = BKE_key_from_id(id); - if (key != NULL) { - BKE_id_free_ex(bmain, &key->id, flag, use_flag_from_idtag); - } + if ((flag & LIB_ID_FREE_NO_MAIN) == 0 && key != NULL) { + BKE_id_free_ex(bmain, &key->id, flag, use_flag_from_idtag); } BKE_libblock_free_datablock(id, flag); -- cgit v1.2.3