@@ -2485,8 +2485,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CON
2485
2485
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2486
2486
ZVAL_FALSE(EX_VAR(opline->result.var));
2487
2487
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2488
+ /* The result and op1 can be the same cv zval */
2489
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
2488
2490
ZVAL_TRUE(EX_VAR(opline->result.var));
2489
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2491
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
2490
2492
SAVE_OPLINE();
2491
2493
GET_OP1_UNDEF_CV(val, BP_VAR_R);
2492
2494
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -3056,8 +3058,10 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_H
3056
3058
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3057
3059
ZVAL_TRUE(EX_VAR(opline->result.var));
3058
3060
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3061
+ /* The result and op1 can be the same cv zval */
3062
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3059
3063
ZVAL_FALSE(EX_VAR(opline->result.var));
3060
- if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
3064
+ if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3061
3065
SAVE_OPLINE();
3062
3066
GET_OP1_UNDEF_CV(val, BP_VAR_R);
3063
3067
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -12101,8 +12105,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(Z
12101
12105
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12102
12106
ZVAL_FALSE(EX_VAR(opline->result.var));
12103
12107
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12108
+ /* The result and op1 can be the same cv zval */
12109
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
12104
12110
ZVAL_TRUE(EX_VAR(opline->result.var));
12105
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12111
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
12106
12112
SAVE_OPLINE();
12107
12113
GET_OP1_UNDEF_CV(val, BP_VAR_R);
12108
12114
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -12363,8 +12369,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_
12363
12369
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
12364
12370
ZVAL_TRUE(EX_VAR(opline->result.var));
12365
12371
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
12372
+ /* The result and op1 can be the same cv zval */
12373
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
12366
12374
ZVAL_FALSE(EX_VAR(opline->result.var));
12367
- if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
12375
+ if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
12368
12376
SAVE_OPLINE();
12369
12377
GET_OP1_UNDEF_CV(val, BP_VAR_R);
12370
12378
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -36411,8 +36419,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_
36411
36419
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
36412
36420
ZVAL_FALSE(EX_VAR(opline->result.var));
36413
36421
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
36422
+ /* The result and op1 can be the same cv zval */
36423
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
36414
36424
ZVAL_TRUE(EX_VAR(opline->result.var));
36415
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
36425
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
36416
36426
SAVE_OPLINE();
36417
36427
GET_OP1_UNDEF_CV(val, BP_VAR_R);
36418
36428
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
@@ -37234,8 +37244,10 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCO
37234
37244
if (Z_TYPE_INFO_P(val) == IS_TRUE) {
37235
37245
ZVAL_TRUE(EX_VAR(opline->result.var));
37236
37246
} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
37247
+ /* The result and op1 can be the same cv zval */
37248
+ const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
37237
37249
ZVAL_FALSE(EX_VAR(opline->result.var));
37238
- if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
37250
+ if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
37239
37251
SAVE_OPLINE();
37240
37252
GET_OP1_UNDEF_CV(val, BP_VAR_R);
37241
37253
ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
0 commit comments