Fix jumps-dependent-on-uninitialized-variable for iterators

We cannot have iter->valid unitialized, but we need to be sure it is set to true on begin.
Bug found by Sergey Sharybin.
This commit is contained in:
Dalai Felinto 2017-11-07 12:50:04 -02:00
parent 98ed20aafd
commit f16199d479
2 changed files with 3 additions and 0 deletions

View File

@ -1800,6 +1800,7 @@ void BKE_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
data->iter.set = NULL;
iter->valid = true;
iter->data = data_in;
BKE_renderable_objects_iterator_next(iter);
}

View File

@ -43,10 +43,12 @@ typedef void (*IteratorBeginCb)(BLI_Iterator *iter, void *data_in);
IteratorCb callback_end_func = callback_end; \
BLI_Iterator iter_macro; \
iter_macro.skip = false; \
iter_macro.valid = false; \
for (callback_begin(&iter_macro, (_data_in)); \
iter_macro.valid; \
callback_next(&iter_macro)) \
{ \
BLI_assert(iter_macro.valid); \
if (iter_macro.skip) { \
iter_macro.skip = false; \
continue; \