[Bf-blender-cvs] [a5ded0720cc] master: Fix (unreported) broken deletion of Shapekeys alongside their owner ID.

Bastien Montagne noreply at git.blender.org
Mon Jul 20 19:18:52 CEST 2020


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



More information about the Bf-blender-cvs mailing list