Skip to content

Commit d526dde

Browse files
committed
Fixed type inference
1 parent 634f79d commit d526dde

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

ext/opcache/Optimizer/zend_inference.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2331,12 +2331,14 @@ static int zend_update_type_info(const zend_op_array *op_array,
23312331
}
23322332
} else if (opline->extended_value == ZEND_ASSIGN_OBJ) {
23332333
if (opline->op1_type == IS_CV) {
2334-
if (orig & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) {
2335-
orig &= (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE);
2336-
orig |= MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
2337-
}
2338-
if (orig & MAY_BE_OBJECT) {
2339-
orig |= (MAY_BE_RC1|MAY_BE_RCN);
2334+
if (!(orig & MAY_BE_REF)) {
2335+
if (orig & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) {
2336+
orig &= (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE);
2337+
orig |= MAY_BE_OBJECT | MAY_BE_RC1 | MAY_BE_RCN;
2338+
}
2339+
if (orig & MAY_BE_OBJECT) {
2340+
orig |= (MAY_BE_RC1|MAY_BE_RCN);
2341+
}
23402342
}
23412343
UPDATE_SSA_TYPE(orig, ssa_ops[i].op1_def);
23422344
COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);

0 commit comments

Comments
 (0)