Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2021-04-09 04:34:45 +0300
committerCampbell Barton <ideasman42@gmail.com>2021-04-09 07:49:32 +0300
commit71da3f31d4972a2b3a519f201d955606ad66dd02 (patch)
treebea277efcadda008a6355280549b3951c59302e7 /source/blender/blenlib/BLI_iterator.h
parent3d7e3d5ad0b4a6b790eb95076394948f5a0e046e (diff)
Fix use of uninitialized memory in BKE_scene_objects_as_gset
Share macro for setting BLI_Iterator defaults to ensure this doesn't happen again in cases the ITER_* macros aren't used. Oversight in 14d74fb34174a91190d35d7fe595f8dd64cb79d1.
Diffstat (limited to 'source/blender/blenlib/BLI_iterator.h')
-rw-r--r--source/blender/blenlib/BLI_iterator.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/blenlib/BLI_iterator.h b/source/blender/blenlib/BLI_iterator.h
index c1cd1c21dac..198e42f340d 100644
--- a/source/blender/blenlib/BLI_iterator.h
+++ b/source/blender/blenlib/BLI_iterator.h
@@ -34,13 +34,19 @@ typedef struct BLI_Iterator {
typedef void (*IteratorCb)(BLI_Iterator *iter);
typedef void (*IteratorBeginCb)(BLI_Iterator *iter, void *data_in);
+#define BLI_ITERATOR_INIT(iter) \
+ { \
+ (iter)->skip = false; \
+ (iter)->valid = true; \
+ } \
+ ((void)0)
+
#define ITER_BEGIN(callback_begin, callback_next, callback_end, _data_in, _type, _instance) \
{ \
_type _instance; \
IteratorCb callback_end_func = callback_end; \
BLI_Iterator iter_macro; \
- iter_macro.skip = false; \
- iter_macro.valid = true; \
+ BLI_ITERATOR_INIT(&iter_macro); \
for (callback_begin(&iter_macro, (_data_in)); iter_macro.valid; callback_next(&iter_macro)) { \
if (iter_macro.skip) { \
iter_macro.skip = false; \