Skip to content

Commit 42619b2

Browse files
committed
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1: Keep consistent EG(current_execute_data) after return from generator (#11380)
2 parents 269d6c5 + 06d6873 commit 42619b2

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

Zend/zend_vm_def.h

+4
Original file line numberDiff line numberDiff line change
@@ -4541,6 +4541,8 @@ ZEND_VM_HANDLER(161, ZEND_GENERATOR_RETURN, CONST|TMP|VAR|CV, ANY, SPEC(OBSERVER
45414541

45424542
ZEND_OBSERVER_FCALL_END(generator->execute_data, &generator->retval);
45434543

4544+
EG(current_execute_data) = EX(prev_execute_data);
4545+
45444546
/* Close the generator to free up resources */
45454547
zend_generator_close(generator, 1);
45464548

@@ -7899,6 +7901,7 @@ ZEND_VM_HELPER(zend_dispatch_try_catch_finally_helper, ANY, ANY, uint32_t try_ca
78997901
cleanup_live_vars(execute_data, op_num, 0);
79007902
if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
79017903
zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
7904+
EG(current_execute_data) = EX(prev_execute_data);
79027905
zend_generator_close(generator, 1);
79037906
ZEND_VM_RETURN();
79047907
} else {
@@ -7992,6 +7995,7 @@ ZEND_VM_HANDLER(150, ZEND_USER_OPCODE, ANY, ANY)
79927995
case ZEND_USER_OPCODE_RETURN:
79937996
if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
79947997
zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
7998+
EG(current_execute_data) = EX(prev_execute_data);
79957999
zend_generator_close(generator, 1);
79968000
ZEND_VM_RETURN();
79978001
} else {

Zend/zend_vm_execute.h

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)