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.
This commit is contained in:
Bastien Montagne 2020-07-20 19:17:24 +02:00
parent bb63ce9839
commit a5ded0720c
1 changed files with 4 additions and 5 deletions

View File

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