diff options
author | Bob Weinand <bobwei9@hotmail.com> | 2015-04-21 19:41:51 +0200 |
---|---|---|
committer | Bob Weinand <bobwei9@hotmail.com> | 2015-04-21 19:42:23 +0200 |
commit | 4376373da33214b52258ea7a38d605f6df011296 (patch) | |
tree | 5082159a09297e2986e120ce49e61fabc1ad327f | |
parent | 05f896eefd0f657c5e868b1fb62d334966b7640e (diff) | |
download | php-git-4376373da33214b52258ea7a38d605f6df011296.tar.gz |
Fix yield from with iterator (first element missing)
-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; |