[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] [php-src] PHP-8.2: Merge branch 'PHP-8.1' into PHP-8.2
From: Bob Weinand <noreply () php ! net>
Date: 2023-01-30 11:26:43
Message-ID: btbx4VSNm9l9TWabsHnTEP7yPDUmEB0KFnDgMXWqaok () main ! php ! net
[Download RAW message or body]
Author: Bob Weinand (bwoebi)
Date: 2023-01-30T12:13:41+01:00
Commit: https://github.com/php/php-src/commit/e746b89bc90adbfbe708801d516ac46c655ed0e3
Raw diff: https://github.com/php/php-src/commit/e746b89bc90adbfbe708801d516ac46c655ed0e3.diff
Merge branch 'PHP-8.1' into PHP-8.2
Changed paths:
A Zend/tests/gh9916-012.phpt
M Zend/zend_generators.c
Diff:
diff --git a/Zend/tests/gh9916-012.phpt b/Zend/tests/gh9916-012.phpt
new file mode 100644
index 000000000000..cd31ea1215b6
--- /dev/null
+++ b/Zend/tests/gh9916-012.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Bug GH-9916 012 (Entering shutdown sequence with a fiber suspended in a Generator \
emits an unavoidable fatal error or crashes) +--FILE--
+<?php
+
+$gen = (function() {
+ yield from (function() { yield; })();
+})();
+$fiber = new Fiber(function() use ($gen) {
+ $gen->current();
+});
+$fiber->start();
+
+?>
+==DONE==
+--EXPECT--
+==DONE==
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index 8202b156355b..6d90106fe9b2 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -765,7 +765,7 @@ ZEND_API void zend_generator_resume(zend_generator \
*orig_generator) /* {{{ */ zend_observer_fcall_end(generator->execute_data, \
&generator->value); }
}
- generator->flags &= ~ZEND_GENERATOR_CURRENTLY_RUNNING;
+ generator->flags &= ~(ZEND_GENERATOR_CURRENTLY_RUNNING | ZEND_GENERATOR_IN_FIBER);
generator->frozen_call_stack = NULL;
if (EXPECTED(generator->execute_data) &&
@@ -805,7 +805,6 @@ ZEND_API void zend_generator_resume(zend_generator \
*orig_generator) /* {{{ */ goto try_again;
}
- generator->flags &= ~ZEND_GENERATOR_IN_FIBER;
orig_generator->flags &= ~ZEND_GENERATOR_DO_INIT;
}
/* }}} */
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic