@@ -3061,6 +3061,7 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_dispatch_try
30613061 cleanup_live_vars(execute_data, op_num, 0);
30623062 if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
30633063 zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
3064+ EG(current_execute_data) = EX(prev_execute_data);
30643065 zend_generator_close(generator, 1);
30653066 ZEND_VM_RETURN();
30663067 } else {
@@ -3154,6 +3155,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_
31543155 case ZEND_USER_OPCODE_RETURN:
31553156 if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
31563157 zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
3158+ EG(current_execute_data) = EX(prev_execute_data);
31573159 zend_generator_close(generator, 1);
31583160 ZEND_VM_RETURN();
31593161 } else {
@@ -4517,6 +4519,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_CONST_HA
45174519 }
45184520 }
45194521
4522+ EG(current_execute_data) = EX(prev_execute_data);
4523+
45204524 /* Close the generator to free up resources */
45214525 zend_generator_close(generator, 1);
45224526
@@ -4562,6 +4566,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_OBSERVER
45624566
45634567 zend_observer_fcall_end(generator->execute_data, &generator->retval);
45644568
4569+ EG(current_execute_data) = EX(prev_execute_data);
4570+
45654571 /* Close the generator to free up resources */
45664572 zend_generator_close(generator, 1);
45674573
@@ -18954,6 +18960,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_TMP_HAND
1895418960 }
1895518961 }
1895618962
18963+ EG(current_execute_data) = EX(prev_execute_data);
18964+
1895718965 /* Close the generator to free up resources */
1895818966 zend_generator_close(generator, 1);
1895918967
@@ -21612,6 +21620,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_VAR_HAND
2161221620 }
2161321621 }
2161421622
21623+ EG(current_execute_data) = EX(prev_execute_data);
21624+
2161521625 /* Close the generator to free up resources */
2161621626 zend_generator_close(generator, 1);
2161721627
@@ -38480,6 +38490,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_CV_HANDL
3848038490 }
3848138491 }
3848238492
38493+ EG(current_execute_data) = EX(prev_execute_data);
38494+
3848338495 /* Close the generator to free up resources */
3848438496 zend_generator_close(generator, 1);
3848538497
0 commit comments