@@ -3184,8 +3184,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CON
3184
3184
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3185
3185
ZVAL_FALSE(EX_VAR(opline->result.var));
3186
3186
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3187
+ /* The result and op1 can be the same cv zval */
3188
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3187
3189
ZVAL_TRUE(EX_VAR(opline->result.var));
3188
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
3190
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3189
3191
SAVE_OPLINE();
3190
3192
ZVAL_UNDEFINED_OP1();
3191
3193
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -3753,8 +3755,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_H
3753
3755
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3754
3756
ZVAL_TRUE(EX_VAR(opline->result.var));
3755
3757
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3758
+ /* The result and op1 can be the same cv zval */
3759
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3756
3760
ZVAL_FALSE(EX_VAR(opline->result.var));
3757
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
3761
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3758
3762
SAVE_OPLINE();
3759
3763
ZVAL_UNDEFINED_OP1();
3760
3764
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -12644,8 +12648,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(Z
12644
12648
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12645
12649
ZVAL_FALSE(EX_VAR(opline->result.var));
12646
12650
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12651
+ /* The result and op1 can be the same cv zval */
12652
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
12647
12653
ZVAL_TRUE(EX_VAR(opline->result.var));
12648
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12654
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
12649
12655
SAVE_OPLINE();
12650
12656
ZVAL_UNDEFINED_OP1();
12651
12657
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -12946,8 +12952,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_
12946
12952
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12947
12953
ZVAL_TRUE(EX_VAR(opline->result.var));
12948
12954
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12955
+ /* The result and op1 can be the same cv zval */
12956
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
12949
12957
ZVAL_FALSE(EX_VAR(opline->result.var));
12950
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12958
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
12951
12959
SAVE_OPLINE();
12952
12960
ZVAL_UNDEFINED_OP1();
12953
12961
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -34897,8 +34905,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_
34897
34905
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
34898
34906
ZVAL_FALSE(EX_VAR(opline->result.var));
34899
34907
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
34908
+ /* The result and op1 can be the same cv zval */
34909
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
34900
34910
ZVAL_TRUE(EX_VAR(opline->result.var));
34901
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
34911
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
34902
34912
SAVE_OPLINE();
34903
34913
ZVAL_UNDEFINED_OP1();
34904
34914
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -35733,8 +35743,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCO
35733
35743
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
35734
35744
ZVAL_TRUE(EX_VAR(opline->result.var));
35735
35745
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
35746
+ /* The result and op1 can be the same cv zval */
35747
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
35736
35748
ZVAL_FALSE(EX_VAR(opline->result.var));
35737
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
35749
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
35738
35750
SAVE_OPLINE();
35739
35751
ZVAL_UNDEFINED_OP1();
35740
35752
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
0 commit comments