PHP 4.0 Bug #9377: memory leaks on error in array_push() and array_unshift()
| From: | chris at nameboy dot com | Date: | Wed, 21 Feb 2001 17:20:52 +0000 |
| Subject: | PHP 4.0 Bug #9377: memory leaks on error in array_push() and array_unshift() | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-47153@lists.php.net to get a copy of this message | ||
From: chris@nameboy.com
Operating system: Redhat Linux 6.1
PHP version: 4.0.4pl1
PHP Bug Type: Arrays related
Bug description: memory leaks on error in array_push() and array_unshift()
Both array_push() and array_unshift() leak memory when
called with a non-array first parameter (which generates an
error, of course)
For example:
<?
$abc = 0;
for($i=0; $i<5000000; $i++) {
@array_push($abc, 123);
}
?>
Patch follows...
--- php-4.0.4pl1/ext/standard/array.c.ORIG Wed Feb 21
09:07:13 2001
+++ php-4.0.4pl1/ext/standard/array.c Wed Feb 21 08:59:59 2001
@@ -1501,6 +1501,7 @@
stack = *args[0];
if (Z_TYPE_P(stack) != IS_ARRAY) {
php_error(E_WARNING, "First argument to
array_push() needs to be an array");
+ efree(args);
RETURN_FALSE;
}
@@ -1605,6 +1606,7 @@
stack = *args[0];
if (Z_TYPE_P(stack) != IS_ARRAY) {
php_error(E_WARNING, "First argument to
array_unshift() needs to be an array");
+ efree(args);
RETURN_FALSE;
}
--
Edit Bug report at: http://bugs.php.net/?id=9377&edit=1