Bug fix #21900
authorTon Roosendaal <ton@blender.org>
Sat, 4 Dec 2010 15:45:16 +0000 (15:45 +0000)
committerTon Roosendaal <ton@blender.org>
Sat, 4 Dec 2010 15:45:16 +0000 (15:45 +0000)
Issue with Library linking: if you already have libraries linked in,
and you attempt to link more data, using internally already linked
stuff (like a group with group links) the linkage would fail. It did
resolve on save-load though.

There's a long commented history in this code explaining it. I found
out it was because of manual step-by-step linking versus normal file
reads. In the first case, the "lib pointer map" was missing references.

source/blender/blenloader/intern/readfile.c

index a360c87511040615d43101b5b1dc71b9145ce034..f0288e16e669261ca988d703366151c31e97b513 100644 (file)
@@ -11481,7 +11481,11 @@ static void expand_doit(FileData *fd, Main *mainvar, void *old)
                                         * lib_indirect.blend but lib.blend does too, linking in a Scene or Group from lib.blend can result in an
                                         * empty without the dupli group referenced. Once you save and reload the group would appier. - Campbell */
                                        /* This crashes files, must look further into it */
-                                       /*oldnewmap_insert(fd->libmap, bhead->old, id, 1);*/
+                                       
+                                       /* Update: the issue is that in file reading, the oldnewmap is OK, but for existing data, it has to be
+                                          inserted in the map to be found! */
+                                       if(id->flag & LIB_PRE_EXISTING)
+                                               oldnewmap_insert(fd->libmap, bhead->old, id, 1);
                                        
                                        change_idid_adr_fd(fd, bhead->old, id);
                                        // commented because this can print way too much