diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | Zend/tests/generators/bug79600.phpt | 24 | ||||
-rw-r--r-- | Zend/zend_generators.c | 1 |
3 files changed, 29 insertions, 0 deletions
@@ -6,12 +6,16 @@ PHP NEWS . Fixed bug #79599 (coredump in set_error_handler). (Laruence) . Fixed bug #79566 (Private SHM is not private on Windows). (cmb) . Fixed bug #79489 (.user.ini does not inherit). (cmb) + . Fixed bug #79600 (Regression in 7.4.6 when yielding an array based + generator). (Nikita) - FFI: . Fixed bug #79571 (FFI: var_dumping unions may segfault). (cmb) - Opcache: . Fixed bug #79588 (Boolean opcache settings ignore on/off values). (cmb) + . Fixed bug #79548 (Preloading segfault with inherited method using static + variable). (Nikita) - SimpleXML: . Fixed bug #79528 (Different object of the same xml between 7.4.5 and diff --git a/Zend/tests/generators/bug79600.phpt b/Zend/tests/generators/bug79600.phpt new file mode 100644 index 0000000000..4abe9784b6 --- /dev/null +++ b/Zend/tests/generators/bug79600.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #79600: Regression in 7.4.6 when yielding an array based generator +--FILE-- +<?php + +function createArrayGenerator() { + yield from [ + 1, + 2, + ]; +} + +function createGeneratorFromArrayGenerator() { + yield from createArrayGenerator(); +} + +foreach (createGeneratorFromArrayGenerator() as $value) { + echo $value, "\n"; +} + +?> +--EXPECT-- +1 +2 diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 9d8546f518..4cd9087303 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -792,6 +792,7 @@ try_again: if (UNEXPECTED(!Z_ISUNDEF(generator->values))) { if (EXPECTED(zend_generator_get_next_delegated_value(generator) == SUCCESS)) { + orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT; return; } /* If there are no more deletegated values, resume the generator |