Skip to content

Commit 1f5562a

Browse files
committed
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Fixed memory leak
2 parents c6a53f9 + 151d2ac commit 1f5562a

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

Zend/Optimizer/sccp.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1524,13 +1524,13 @@ static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_o
15241524

15251525
dup_partial_object(&zv, op1);
15261526
ct_eval_assign_obj(&zv, &tmp2, op2);
1527-
if (opline->opcode == ZEND_PRE_INC_OBJ
1528-
|| opline->opcode == ZEND_PRE_DEC_OBJ) {
1527+
if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) {
15291528
SET_RESULT(result, &tmp2);
1530-
zval_ptr_dtor_nogc(&tmp1);
15311529
} else {
15321530
SET_RESULT(result, &tmp1);
15331531
}
1532+
zval_ptr_dtor_nogc(&tmp1);
1533+
zval_ptr_dtor_nogc(&tmp2);
15341534
SET_RESULT(op1, &zv);
15351535
zval_ptr_dtor_nogc(&zv);
15361536
break;

ext/opcache/tests/opt/sccp_038.phpt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
--TEST--
2+
SCCP 038: Memory leak
3+
--INI--
4+
opcache.enable=1
5+
opcache.enable_cli=1
6+
opcache.optimization_level=-1
7+
--FILE--
8+
<?php
9+
function foo() {
10+
$obj = new stdClass;
11+
$obj->$b = ~$b = $a = '##';
12+
$obj->$a++;
13+
}
14+
foo();
15+
?>
16+
DONE
17+
--EXPECT--
18+
DONE

0 commit comments

Comments
 (0)