Skip to content

Commit bf079d0

Browse files
committed
Merge branch 'PHP-8.1'
* PHP-8.1: Fixed memory leak
2 parents bfedb4e + 1f5562a commit bf079d0

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
@@ -1379,13 +1379,13 @@ static void sccp_visit_instr(scdf_ctx *scdf, zend_op *opline, zend_ssa_op *ssa_o
13791379

13801380
dup_partial_object(&zv, op1);
13811381
ct_eval_assign_obj(&zv, &tmp2, op2);
1382-
if (opline->opcode == ZEND_PRE_INC_OBJ
1383-
|| opline->opcode == ZEND_PRE_DEC_OBJ) {
1382+
if (opline->opcode == ZEND_PRE_INC_OBJ || opline->opcode == ZEND_PRE_DEC_OBJ) {
13841383
SET_RESULT(result, &tmp2);
1385-
zval_ptr_dtor_nogc(&tmp1);
13861384
} else {
13871385
SET_RESULT(result, &tmp1);
13881386
}
1387+
zval_ptr_dtor_nogc(&tmp1);
1388+
zval_ptr_dtor_nogc(&tmp2);
13891389
SET_RESULT(op1, &zv);
13901390
zval_ptr_dtor_nogc(&zv);
13911391
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)