@@ -5376,7 +5376,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CONST_HANDLER(
5376
5376
5377
5377
Z_ADDREF_P(val);
5378
5378
5379
- if (Z_ISUNDEF(new_gen->retval)) {
5379
+ if (UNEXPECTED(new_gen->execute_data == NULL)) {
5380
+ zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
5381
+ zval_ptr_dtor(val);
5382
+ UNDEF_RESULT();
5383
+ HANDLE_EXCEPTION();
5384
+ } else if (Z_ISUNDEF(new_gen->retval)) {
5380
5385
if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
5381
5386
zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
5382
5387
zval_ptr_dtor(val);
@@ -5385,11 +5390,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CONST_HANDLER(
5385
5390
} else {
5386
5391
zend_generator_yield_from(generator, new_gen);
5387
5392
}
5388
- } else if (UNEXPECTED(new_gen->execute_data == NULL)) {
5389
- zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
5390
- zval_ptr_dtor(val);
5391
- UNDEF_RESULT();
5392
- HANDLE_EXCEPTION();
5393
5393
} else {
5394
5394
if (RETURN_VALUE_USED(opline)) {
5395
5395
ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
@@ -14615,7 +14615,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_TMPVAR_HANDLER
14615
14615
Z_ADDREF_P(val);
14616
14616
zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14617
14617
14618
- if (Z_ISUNDEF(new_gen->retval)) {
14618
+ if (UNEXPECTED(new_gen->execute_data == NULL)) {
14619
+ zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
14620
+ zval_ptr_dtor(val);
14621
+ UNDEF_RESULT();
14622
+ HANDLE_EXCEPTION();
14623
+ } else if (Z_ISUNDEF(new_gen->retval)) {
14619
14624
if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
14620
14625
zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
14621
14626
zval_ptr_dtor(val);
@@ -14624,11 +14629,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_TMPVAR_HANDLER
14624
14629
} else {
14625
14630
zend_generator_yield_from(generator, new_gen);
14626
14631
}
14627
- } else if (UNEXPECTED(new_gen->execute_data == NULL)) {
14628
- zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
14629
- zval_ptr_dtor(val);
14630
- UNDEF_RESULT();
14631
- HANDLE_EXCEPTION();
14632
14632
} else {
14633
14633
if (RETURN_VALUE_USED(opline)) {
14634
14634
ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
@@ -39261,7 +39261,12 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CV_HANDLER(ZEN
39261
39261
39262
39262
Z_ADDREF_P(val);
39263
39263
39264
- if (Z_ISUNDEF(new_gen->retval)) {
39264
+ if (UNEXPECTED(new_gen->execute_data == NULL)) {
39265
+ zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
39266
+ zval_ptr_dtor(val);
39267
+ UNDEF_RESULT();
39268
+ HANDLE_EXCEPTION();
39269
+ } else if (Z_ISUNDEF(new_gen->retval)) {
39265
39270
if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
39266
39271
zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
39267
39272
zval_ptr_dtor(val);
@@ -39270,11 +39275,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CV_HANDLER(ZEN
39270
39275
} else {
39271
39276
zend_generator_yield_from(generator, new_gen);
39272
39277
}
39273
- } else if (UNEXPECTED(new_gen->execute_data == NULL)) {
39274
- zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
39275
- zval_ptr_dtor(val);
39276
- UNDEF_RESULT();
39277
- HANDLE_EXCEPTION();
39278
39278
} else {
39279
39279
if (RETURN_VALUE_USED(opline)) {
39280
39280
ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
0 commit comments