@@ -3276,8 +3276,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CON
3276
3276
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3277
3277
ZVAL_FALSE(EX_VAR(opline->result.var));
3278
3278
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3279
+ /* The result and op1 can be the same cv zval */
3280
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3279
3281
ZVAL_TRUE(EX_VAR(opline->result.var));
3280
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
3282
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3281
3283
SAVE_OPLINE();
3282
3284
ZVAL_UNDEFINED_OP1();
3283
3285
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -3851,8 +3853,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_H
3851
3853
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3852
3854
ZVAL_TRUE(EX_VAR(opline->result.var));
3853
3855
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3856
+ /* The result and op1 can be the same cv zval */
3857
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3854
3858
ZVAL_FALSE(EX_VAR(opline->result.var));
3855
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
3859
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3856
3860
SAVE_OPLINE();
3857
3861
ZVAL_UNDEFINED_OP1();
3858
3862
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -13286,8 +13290,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(Z
13286
13290
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
13287
13291
ZVAL_FALSE(EX_VAR(opline->result.var));
13288
13292
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
13293
+ /* The result and op1 can be the same cv zval */
13294
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
13289
13295
ZVAL_TRUE(EX_VAR(opline->result.var));
13290
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
13296
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
13291
13297
SAVE_OPLINE();
13292
13298
ZVAL_UNDEFINED_OP1();
13293
13299
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -13548,8 +13554,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_
13548
13554
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
13549
13555
ZVAL_TRUE(EX_VAR(opline->result.var));
13550
13556
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
13557
+ /* The result and op1 can be the same cv zval */
13558
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
13551
13559
ZVAL_FALSE(EX_VAR(opline->result.var));
13552
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
13560
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
13553
13561
SAVE_OPLINE();
13554
13562
ZVAL_UNDEFINED_OP1();
13555
13563
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -36479,8 +36487,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_
36479
36487
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36480
36488
ZVAL_FALSE(EX_VAR(opline->result.var));
36481
36489
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36490
+ /* The result and op1 can be the same cv zval */
36491
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
36482
36492
ZVAL_TRUE(EX_VAR(opline->result.var));
36483
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36493
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
36484
36494
SAVE_OPLINE();
36485
36495
ZVAL_UNDEFINED_OP1();
36486
36496
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -37362,8 +37372,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCO
37362
37372
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
37363
37373
ZVAL_TRUE(EX_VAR(opline->result.var));
37364
37374
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
37375
+ /* The result and op1 can be the same cv zval */
37376
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
37365
37377
ZVAL_FALSE(EX_VAR(opline->result.var));
37366
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
37378
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
37367
37379
SAVE_OPLINE();
37368
37380
ZVAL_UNDEFINED_OP1();
37369
37381
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
0 commit comments