Skip to content

Commit 292d76d

Browse files
committed
JIT: Fixed reference-counting inference
1 parent 0ef1dfc commit 292d76d

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

ext/opcache/Optimizer/zend_inference.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2147,7 +2147,7 @@ static uint32_t binary_op_result_type(
21472147
case ZEND_BW_AND:
21482148
case ZEND_BW_XOR:
21492149
if ((t1_type & MAY_BE_STRING) && (t2_type & MAY_BE_STRING)) {
2150-
tmp |= MAY_BE_STRING | MAY_BE_RC1;
2150+
tmp |= MAY_BE_STRING | MAY_BE_RC1 | MAY_BE_RCN;
21512151
}
21522152
if ((t1_type & ~MAY_BE_STRING) || (t2_type & ~MAY_BE_STRING)) {
21532153
tmp |= MAY_BE_LONG;

ext/opcache/tests/jit/and_001.phpt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
--TEST--
2+
JIT BW_AND: 001 (emty string)
3+
--INI--
4+
opcache.enable=1
5+
opcache.enable_cli=1
6+
opcache.file_update_protection=0
7+
opcache.jit_buffer_size=1M
8+
--FILE--
9+
<?php
10+
$a = [];
11+
$b = "";
12+
$a["" & $b] *= 3;
13+
?>
14+
DONE
15+
--EXPECTF--
16+
Warning: Undefined array key "" in %sand_001.php on line 4
17+
DONE

0 commit comments

Comments
 (0)