Commit: a5ded0720ccf1433d8316b44516866373042917e
Author: Bastien Montagne
Date:   Mon Jul 20 19:17:24 2020 +0200
Branches: master
https://developer.blender.org/rBa5ded0720ccf1433d8316b44516866373042917e

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.

===================================================================

M       source/blender/blenkernel/intern/lib_id_delete.c

===================================================================

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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to