[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