@@ -26372,16 +26372,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLE
26372
26372
value_ptr = _get_zval_ptr_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26373
26373
variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26374
26374
26375
- if (IS_VAR == IS_VAR &&
26376
- UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
26377
- UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
26375
+ if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
26376
+ variable_ptr = &EG(uninitialized_zval);
26377
+ } else if (IS_VAR == IS_VAR &&
26378
+ UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
26378
26379
26379
26380
zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
26380
26381
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26381
26382
if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
26382
26383
UNDEF_RESULT();
26383
26384
HANDLE_EXCEPTION();
26384
-
26385
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
26386
+ variable_ptr = &EG(uninitialized_zval);
26385
26387
} else if (IS_VAR == IS_VAR &&
26386
26388
opline->extended_value == ZEND_RETURNS_FUNCTION &&
26387
26389
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
@@ -26392,22 +26394,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLE
26392
26394
HANDLE_EXCEPTION();
26393
26395
}
26394
26396
26397
+ /* op2 freed by assign_to_variable */
26398
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26399
+ ZEND_VM_NEXT_OPCODE();
26395
26400
} else {
26401
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
26402
+ }
26396
26403
26397
- if ((IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
26398
- (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
26399
- variable_ptr = &EG(uninitialized_zval);
26400
- } else {
26401
- zend_assign_to_variable_reference(variable_ptr, value_ptr);
26402
- }
26403
-
26404
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26405
- ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
26406
- }
26407
-
26408
- if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
26404
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26405
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
26409
26406
}
26410
26407
26408
+ if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
26411
26409
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26412
26410
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26413
26411
}
@@ -29425,16 +29423,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER
29425
29423
value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
29426
29424
variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
29427
29425
29428
- if (IS_VAR == IS_VAR &&
29429
- UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
29430
- UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
29426
+ if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
29427
+ variable_ptr = &EG(uninitialized_zval);
29428
+ } else if (IS_VAR == IS_VAR &&
29429
+ UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
29431
29430
29432
29431
zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
29433
29432
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29434
29433
29435
29434
UNDEF_RESULT();
29436
29435
HANDLE_EXCEPTION();
29437
-
29436
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
29437
+ variable_ptr = &EG(uninitialized_zval);
29438
29438
} else if (IS_CV == IS_VAR &&
29439
29439
opline->extended_value == ZEND_RETURNS_FUNCTION &&
29440
29440
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
@@ -29445,19 +29445,15 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER
29445
29445
HANDLE_EXCEPTION();
29446
29446
}
29447
29447
29448
+ /* op2 freed by assign_to_variable */
29449
+ if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
29450
+ ZEND_VM_NEXT_OPCODE();
29448
29451
} else {
29452
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
29453
+ }
29449
29454
29450
- if ((IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
29451
- (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
29452
- variable_ptr = &EG(uninitialized_zval);
29453
- } else {
29454
- zend_assign_to_variable_reference(variable_ptr, value_ptr);
29455
- }
29456
-
29457
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29458
- ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
29459
- }
29460
-
29455
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29456
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
29461
29457
}
29462
29458
29463
29459
if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
@@ -45055,16 +45051,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER
45055
45051
value_ptr = _get_zval_ptr_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45056
45052
variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
45057
45053
45058
- if (IS_CV == IS_VAR &&
45059
- UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
45060
- UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
45054
+ if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
45055
+ variable_ptr = &EG(uninitialized_zval);
45056
+ } else if (IS_CV == IS_VAR &&
45057
+ UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
45061
45058
45062
45059
zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
45063
45060
45064
45061
if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
45065
45062
UNDEF_RESULT();
45066
45063
HANDLE_EXCEPTION();
45067
-
45064
+ } else if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
45065
+ variable_ptr = &EG(uninitialized_zval);
45068
45066
} else if (IS_VAR == IS_VAR &&
45069
45067
opline->extended_value == ZEND_RETURNS_FUNCTION &&
45070
45068
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
@@ -45075,22 +45073,19 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER
45075
45073
HANDLE_EXCEPTION();
45076
45074
}
45077
45075
45078
- } else {
45076
+ /* op2 freed by assign_to_variable */
45079
45077
45080
- if ((IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
45081
- (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
45082
- variable_ptr = &EG(uninitialized_zval);
45083
- } else {
45084
- zend_assign_to_variable_reference(variable_ptr, value_ptr);
45085
- }
45086
-
45087
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45088
- ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
45089
- }
45078
+ ZEND_VM_NEXT_OPCODE();
45079
+ } else {
45080
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
45081
+ }
45090
45082
45091
- if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
45083
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45084
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
45092
45085
}
45093
45086
45087
+ if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
45088
+
45094
45089
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45095
45090
}
45096
45091
@@ -49567,16 +49562,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(
49567
49562
value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
49568
49563
variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
49569
49564
49570
- if (IS_CV == IS_VAR &&
49571
- UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
49572
- UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
49565
+ if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
49566
+ variable_ptr = &EG(uninitialized_zval);
49567
+ } else if (IS_CV == IS_VAR &&
49568
+ UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT)) {
49573
49569
49574
49570
zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
49575
49571
49576
49572
49577
49573
UNDEF_RESULT();
49578
49574
HANDLE_EXCEPTION();
49579
-
49575
+ } else if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr))) {
49576
+ variable_ptr = &EG(uninitialized_zval);
49580
49577
} else if (IS_CV == IS_VAR &&
49581
49578
opline->extended_value == ZEND_RETURNS_FUNCTION &&
49582
49579
UNEXPECTED(!Z_ISREF_P(value_ptr))) {
@@ -49587,21 +49584,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(
49587
49584
HANDLE_EXCEPTION();
49588
49585
}
49589
49586
49590
- } else {
49591
-
49592
- if ((IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
49593
- (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
49594
- variable_ptr = &EG(uninitialized_zval);
49595
- } else {
49596
- zend_assign_to_variable_reference(variable_ptr, value_ptr);
49597
- }
49587
+ /* op2 freed by assign_to_variable */
49598
49588
49599
- if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49600
- ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
49601
- }
49589
+ ZEND_VM_NEXT_OPCODE();
49590
+ } else {
49591
+ zend_assign_to_variable_reference(variable_ptr, value_ptr);
49592
+ }
49602
49593
49594
+ if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
49595
+ ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
49603
49596
}
49604
49597
49598
+
49605
49599
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49606
49600
}
49607
49601
0 commit comments