Commit: ec180218678be5704d31532fff8c20d2356b8f02
Author: Campbell Barton
Date:   Mon Mar 9 14:23:30 2015 +1100
Branches: master
https://developer.blender.org/rBec180218678be5704d31532fff8c20d2356b8f02

Fix T43337: Group object disappear after append

Relying on user-count of 1 wasn't reliable because of custom-bones.

===================================================================

M       source/blender/blenloader/intern/readfile.c

===================================================================

diff --git a/source/blender/blenloader/intern/readfile.c 
b/source/blender/blenloader/intern/readfile.c
index ceccb73..45d1c20 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -9045,7 +9045,7 @@ static void give_base_to_objects(Main *mainvar, Scene 
*sce, Library *lib, const
                                        do_it = true;
                                }
                                else if (idcode==ID_GR) {
-                                       if (ob->id.us == 1 && is_link == false 
&& ob->id.lib == lib) {
+                                       if ((is_link == false) && (ob->id.lib 
== lib)) {
                                                if ((ob->flag & OB_FROMGROUP) 
&& object_in_any_scene(mainvar, ob)==0) {
                                                        do_it = true;
                                                }
@@ -9054,7 +9054,7 @@ static void give_base_to_objects(Main *mainvar, Scene 
*sce, Library *lib, const
                                else {
                                        /* when appending, make sure any 
indirectly loaded objects
                                         * get a base else they cant be 
accessed at all [#27437] */
-                                       if (ob->id.us==1 && is_link == false && 
ob->id.lib == lib) {
+                                       if ((is_link == false) && (ob->id.lib 
== lib)) {
                                                /* we may be appending from a 
scene where we already
                                                 *  have a linked object which 
is not in any scene [#27616] */
                                                if ((ob->id.flag & 
LIB_PRE_EXISTING)==0) {
@@ -9074,7 +9074,9 @@ static void give_base_to_objects(Main *mainvar, Scene 
*sce, Library *lib, const
                                        base->lay = ob->lay;
                                        base->object = ob;
                                        base->flag = ob->flag;
-                                       ob->id.us = 1;
+
+                                       CLAMP_MIN(ob->id.us, 0);
+                                       ob->id.us += 1;
                                        
                                        ob->id.flag -= LIB_INDIRECT;
                                        ob->id.flag |= LIB_EXTERN;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to