[Bf-blender-cvs] [28e44da8604] blender2.8: Scene object iterator: Replace recursion with loop
Sergey Sharybin
noreply at git.blender.org
Tue Jun 6 11:23:12 CEST 2017
Commit: 28e44da8604bf856b8f82f5696edeac4010e3b4b
Author: Sergey Sharybin
Date: Tue Jun 6 11:22:13 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB28e44da8604bf856b8f82f5696edeac4010e3b4b
Scene object iterator: Replace recursion with loop
This way we are not afraid of recursion being too deep.
That could have happened when having two collections which
are sharing same list of 1000s of objects.
===================================================================
M source/blender/blenkernel/intern/collection.c
===================================================================
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 7d265b8fd02..f0ae3d8be1c 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -584,18 +584,14 @@ void BKE_scene_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
*/
static LinkData *object_base_unique(GSet *gs, LinkData *link)
{
- if (link == NULL) {
- return NULL;
- }
-
- Object *ob = link->data;
- if (!BLI_gset_haskey(gs, ob)) {
- BLI_gset_add(gs, ob);
- return link;
- }
- else {
- return object_base_unique(gs, link->next);
+ for (; link != NULL; link = link->next) {
+ Object *ob = link->data;
+ if (!BLI_gset_haskey(gs, ob)) {
+ BLI_gset_add(gs, ob);
+ return link;
+ }
}
+ return NULL;
}
void BKE_scene_objects_iterator_next(BLI_Iterator *iter)
More information about the Bf-blender-cvs
mailing list