diff options
author | Bastien Montagne <b.mont29@gmail.com> | 2019-11-08 19:47:48 +0300 |
---|---|---|
committer | Bastien Montagne <b.mont29@gmail.com> | 2019-11-08 19:47:48 +0300 |
commit | 8c695404a481488879eb811b04e126fcdb92a915 (patch) | |
tree | 44e91fa3b4aa0d527db7f9af5dd8f40bf4949625 | |
parent | 76be5b5bf5c830f8a3a3640fcf439bdca3a9aa89 (diff) |
Fix T70778: Library Override dissabled after re-instancing same collection in different scene.
Very stupid mistake in own new generic ID lib_link function, that would try
to link ID pointers for all data-blocks, not only those actually needing it.
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 452e75081d6..167917f7b6a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -2618,10 +2618,13 @@ static void lib_link_id(FileData *fd, Main *main) ID *id; for (id = lb->first; id; id = id->next) { - if (id->override_library) { - id->override_library->reference = newlibadr_us( - fd, id->lib, id->override_library->reference); - id->override_library->storage = newlibadr_us(fd, id->lib, id->override_library->storage); + if (id->tag & LIB_TAG_NEED_LINK) { + if (id->override_library) { + id->override_library->reference = newlibadr_us( + fd, id->lib, id->override_library->reference); + id->override_library->storage = newlibadr_us(fd, id->lib, id->override_library->storage); + } + /* DO NOT clear LIB_TAG_NEED_LINK here, it is used again by per-ID-type linkers. */ } } } |