Fix `BKE_library_make_local()` trying to also make local proxified objects.
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 10 Nov 2016 16:05:36 +0000 (17:05 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 10 Nov 2016 16:09:16 +0000 (17:09 +0100)
Proxified objects can never be local, we can totally ignore them here.

This 'fixes' the asserts related to usercount when trying to remap poselib
of localized proxified objects (not sure what exactly was going on wrong here,
but proxies are a giant can of worms for sane data-blocks handling anyway :/).

source/blender/blenkernel/intern/library.c

index 14804d0077ad20280b57971963698031ccbc9e79..fc87dade89185e3b1819a8b1c994a9fd47dbf6bb 100644 (file)
@@ -1672,9 +1672,10 @@ void BKE_library_make_local(
                        /* The check on the second line (LIB_TAG_PRE_EXISTING) is done so its
                         * possible to tag data you don't want to be made local, used for
                         * appending data, so any libdata already linked wont become local
-                        * (very nasty to discover all your links are lost after appending)  
-                        * */
+                        * (very nasty to discover all your links are lost after appending).
+                        * Also, never ever make proxified objects local, would not make any sense. */
                        if (!do_skip && id->tag & (LIB_TAG_EXTERN | LIB_TAG_INDIRECT | LIB_TAG_NEW) &&
+                           !(GS(id->name) == ID_OB && ((Object *)id)->proxy_from != NULL) &&
                            ((untagged_only == false) || !(id->tag & LIB_TAG_PRE_EXISTING)))
                        {
                                if (lib == NULL || id->lib == lib) {