diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/lib_id_delete.c | 9 |
1 files changed, 4 insertions, 5 deletions
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); |