summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-05-15 11:03:05 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-05-15 11:04:40 +0200
commitd87b0685b5ec4e5df6d732414653f343bc44af8c (patch)
treefebbde6abad857a7137192b76c021d304ad985b9
parent3a3241ced795aef48665c9a2233043da0fcd5a8c (diff)
downloadphp-git-d87b0685b5ec4e5df6d732414653f343bc44af8c.tar.gz
Fixed bug #79600
Missed unsetting of DO_INIT in one case.
-rw-r--r--NEWS4
-rw-r--r--Zend/tests/generators/bug79600.phpt24
-rw-r--r--Zend/zend_generators.c1
3 files changed, 29 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 948e869ba9..0e0a1e497d 100644
--- a/NEWS
+++ b/NEWS
@@ -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