diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c index 150226523f2..96cf0fe574a 100644 --- a/source/blender/blenkernel/intern/group.c +++ b/source/blender/blenkernel/intern/group.c @@ -182,6 +182,7 @@ static bool group_object_add_internal(Group *group, Object *ob) BLI_addtail(&group->gobject, go); go->ob = ob; + id_us_ensure_real(&go->ob->id); return true; } diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index a800b3d8834..002007e2a58 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -514,7 +514,7 @@ void BKE_library_foreach_ID_link(ID *id, LibraryIDLinkCallback callback, void *u Group *group = (Group *) id; GroupObject *gob; for (gob = group->gobject.first; gob; gob = gob->next) { - CALLBACK_INVOKE(gob->ob, IDWALK_NOP); + CALLBACK_INVOKE(gob->ob, IDWALK_USER_ONE); } break; } diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 2060894dc30..6c6af2d1fc6 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -7268,25 +7268,26 @@ static void lib_link_group(FileData *fd, Main *main) { Group *group; GroupObject *go; - int add_us; + bool add_us; for (group = main->group.first; group; group = group->id.next) { if (group->id.flag & LIB_NEED_LINK) { group->id.flag -= LIB_NEED_LINK; - add_us = 0; + add_us = false; for (go = group->gobject.first; go; go = go->next) { go->ob= newlibadr(fd, group->id.lib, go->ob); if (go->ob) { go->ob->flag |= OB_FROMGROUP; /* if group has an object, it increments user... */ - add_us = 1; - if (go->ob->id.us == 0) - go->ob->id.us = 1; + add_us = true; + id_us_ensure_real(&go->ob->id); } } - if (add_us) group->id.us++; + if (add_us) { + id_us_ensure_real(&group->id); + } BKE_group_object_unlink(group, NULL, NULL, NULL); /* removes NULL entries */ } }