Merge branch 'PHP-7.2' into PHP-7.3

* PHP-7.2:
  Fix #76778: array_reduce leaks memory if callback throws exception
This commit is contained in:
Christoph M. Becker 2018-08-22 13:50:46 +02:00
commit 1de17428f6
3 changed files with 29 additions and 0 deletions

2
NEWS
View File

@ -25,6 +25,8 @@ PHP NEWS
Siebels)
- Standard:
. Fixed bug #76778 (array_reduce leaks memory if callback throws exception).
(cmb)
. Fixed bug #76755 (setcookie does not accept "double" type for expire time).
(Laruence)
. Fixed bug #76674 (improve array_* failure messages exposing what was passed

View File

@ -5994,6 +5994,7 @@ PHP_FUNCTION(array_reduce)
} else {
zval_ptr_dtor(&args[1]);
zval_ptr_dtor(&args[0]);
zval_ptr_dtor(&result);
return;
}
} ZEND_HASH_FOREACH_END();

View File

@ -0,0 +1,26 @@
--TEST--
Bug #76778 (array_reduce leaks memory if callback throws exception)
--SKIPIF--
<?php
if (getenv("SKIP_SLOW_TESTS")) die('skip slow test');
?>
--INI--
memory_limit=32M
--FILE--
<?php
for ($i = 0; $i < 100; $i++) {
try {
array_reduce(
[1],
function ($carry, $item) {
throw new Exception;
},
range(1, 200000)
);
} catch (Exception $e) {
}
}
?>
===DONE===
--EXPECT--
===DONE===