diff options
-rw-r--r-- | Zend/tests/generators/yield_from_iterator.phpt | 21 | ||||
-rw-r--r-- | Zend/zend_generators.c | 2 |
2 files changed, 22 insertions, 1 deletions
diff --git a/Zend/tests/generators/yield_from_iterator.phpt b/Zend/tests/generators/yield_from_iterator.phpt new file mode 100644 index 0000000000..959d6a2d33 --- /dev/null +++ b/Zend/tests/generators/yield_from_iterator.phpt @@ -0,0 +1,21 @@ +--TEST-- +yield from with an (Array)Iterator +--FILE-- +<?php +function g() { + yield 1; + yield from new ArrayIterator([2, 3, 4]); + yield 5; +} + +$g = g(); +foreach ($g as $yielded) { + var_dump($yielded); +} +?> +--EXPECT-- +int(1) +int(2) +int(3) +int(4) +int(5) diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index ea84950691..0ac00afd4b 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -603,7 +603,7 @@ static int zend_generator_get_next_delegated_value(zend_generator *generator) /* } else { zend_object_iterator *iter = (zend_object_iterator *) Z_OBJ(generator->values); - if (++iter->index > 0) { + if (iter->index++ > 0) { iter->funcs->move_forward(iter); if (UNEXPECTED(EG(exception) != NULL)) { goto failure; |