@@ -2653,8 +2653,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZE
2653
2653
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2654
2654
ZVAL_FALSE(EX_VAR(opline->result.var));
2655
2655
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2656
+ /* The result and op1 can be the same cv zval */
2657
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
2656
2658
ZVAL_TRUE(EX_VAR(opline->result.var));
2657
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2659
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
2658
2660
SAVE_OPLINE();
2659
2661
GET_OP1_UNDEF_CV(val, BP_VAR_R);
2660
2662
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -3185,8 +3187,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_O
3185
3187
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3186
3188
ZVAL_TRUE(EX_VAR(opline->result.var));
3187
3189
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3190
+ /* The result and op1 can be the same cv zval */
3191
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3188
3192
ZVAL_FALSE(EX_VAR(opline->result.var));
3189
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
3193
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3190
3194
SAVE_OPLINE();
3191
3195
GET_OP1_UNDEF_CV(val, BP_VAR_R);
3192
3196
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -32866,8 +32870,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_
32866
32870
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
32867
32871
ZVAL_FALSE(EX_VAR(opline->result.var));
32868
32872
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
32873
+ /* The result and op1 can be the same cv zval */
32874
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
32869
32875
ZVAL_TRUE(EX_VAR(opline->result.var));
32870
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
32876
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
32871
32877
SAVE_OPLINE();
32872
32878
GET_OP1_UNDEF_CV(val, BP_VAR_R);
32873
32879
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -33704,8 +33710,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCO
33704
33710
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
33705
33711
ZVAL_TRUE(EX_VAR(opline->result.var));
33706
33712
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33713
+ /* The result and op1 can be the same cv zval */
33714
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
33707
33715
ZVAL_FALSE(EX_VAR(opline->result.var));
33708
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
33716
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
33709
33717
SAVE_OPLINE();
33710
33718
GET_OP1_UNDEF_CV(val, BP_VAR_R);
33711
33719
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -48537,8 +48545,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(Z
48537
48545
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48538
48546
ZVAL_FALSE(EX_VAR(opline->result.var));
48539
48547
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48548
+ /* The result and op1 can be the same cv zval */
48549
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
48540
48550
ZVAL_TRUE(EX_VAR(opline->result.var));
48541
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48551
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
48542
48552
SAVE_OPLINE();
48543
48553
GET_OP1_UNDEF_CV(val, BP_VAR_R);
48544
48554
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -48801,8 +48811,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_
48801
48811
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48802
48812
ZVAL_TRUE(EX_VAR(opline->result.var));
48803
48813
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48814
+ /* The result and op1 can be the same cv zval */
48815
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
48804
48816
ZVAL_FALSE(EX_VAR(opline->result.var));
48805
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48817
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
48806
48818
SAVE_OPLINE();
48807
48819
GET_OP1_UNDEF_CV(val, BP_VAR_R);
48808
48820
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
0 commit comments