Fix T53363: Blender won't update mesh's usercount when deleting object datablocks...
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 25 Jan 2018 09:11:12 +0000 (10:11 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 25 Jan 2018 09:11:12 +0000 (10:11 +0100)
Only do special handling of ob->data pointer in case we are remapping to
a valid (non-NULL) other obdata. Otherwise, handle it as any other
'remapping to NULL' case.

Hopefully not breaking anything else...

source/blender/blenkernel/intern/library_remap.c

index 49effd033e30fbd2f48d86cb87d70967adef46e8..31dc46a55f09eff8e4d7d7008f8926f561e65e7c 100644 (file)
@@ -194,9 +194,11 @@ static int foreach_libblock_remap_callback(void *user_data, ID *id_self, ID **id
                        id->tag |= LIB_TAG_DOIT;
                }
 
-               /* Special hack in case it's Object->data and we are in edit mode (skipped_direct too). */
+               /* Special hack in case it's Object->data and we are in edit mode, and new_id is not NULL
+                * (otherwise, we follow common NEVER_NULL flags).
+                * (skipped_indirect too). */
                if ((is_never_null && skip_never_null) ||
-                   (is_obj_editmode && (((Object *)id)->data == *id_p)) ||
+                   (is_obj_editmode && (((Object *)id)->data == *id_p) && new_id != NULL) ||
                    (skip_indirect && is_indirect))
                {
                        if (is_indirect) {