tony2001 Wed Nov 15 22:10:20 2006 UTC
Added files: (Branch: PHP_5_2)
/php-src/ext/standard/tests/array array_pad.phpt
Modified files:
/php-src/ext/standard array.c
Log:
fix leak, add test
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.17&r2=1.308.2.21.2.18&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.308.2.21.2.17
php-src/ext/standard/array.c:1.308.2.21.2.18
--- php-src/ext/standard/array.c:1.308.2.21.2.17 Sun Nov 12 17:23:01 2006
+++ php-src/ext/standard/array.c Wed Nov 15 22:10:19 2006
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.308.2.21.2.17 2006/11/12 17:23:01 iliaa Exp $ */
+/* $Id: array.c,v 1.308.2.21.2.18 2006/11/15 22:10:19 tony2001 Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -2656,6 +2656,7 @@
num_pads = pad_size_abs - input_size;
if(num_pads > 1048576) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "You may only pad
up to 1048576 elements at a time");
+ zval_dtor(return_value);
RETURN_FALSE;
}
pads = (zval ***)safe_emalloc(num_pads, sizeof(zval **), 0);
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/array/array_pad.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/array/array_pad.phpt
+++ php-src/ext/standard/tests/array/array_pad.phpt
--TEST--
array_pad() tests
--FILE--
<?php
var_dump(array_pad());
var_dump(array_pad(array()));
var_dump(array_pad(array(), 1));
var_dump(array_pad(array(), 1, 0));
var_dump(array_pad(array(), 0, 0));
var_dump(array_pad(array(), -1, 0));
var_dump(array_pad(array("", -1, 2.0), 5, 0));
var_dump(array_pad(array("", -1, 2.0), 5, array()));
var_dump(array_pad(array("", -1, 2.0), 2, array()));
var_dump(array_pad(array("", -1, 2.0), -3, array()));
var_dump(array_pad(array("", -1, 2.0), -4, array()));
var_dump(array_pad(array("", -1, 2.0), 2000000, 0));
echo "Done\n";
?>
--EXPECTF--
Warning: array_pad() expects exactly 3 parameters, 0 given in %s on line %d
NULL
Warning: array_pad() expects exactly 3 parameters, 1 given in %s on line %d
NULL
Warning: array_pad() expects exactly 3 parameters, 2 given in %s on line %d
NULL
array(1) {
[0]=>
int(0)
}
array(0) {
}
array(1) {
[0]=>
int(0)
}
array(5) {
[0]=>
string(0) ""
[1]=>
int(-1)
[2]=>
float(2)
[3]=>
int(0)
[4]=>
int(0)
}
array(5) {
[0]=>
string(0) ""
[1]=>
int(-1)
[2]=>
float(2)
[3]=>
array(0) {
}
[4]=>
array(0) {
}
}
array(3) {
[0]=>
string(0) ""
[1]=>
int(-1)
[2]=>
float(2)
}
array(3) {
[0]=>
string(0) ""
[1]=>
int(-1)
[2]=>
float(2)
}
array(4) {
[0]=>
array(0) {
}
[1]=>
string(0) ""
[2]=>
int(-1)
[3]=>
float(2)
}
Warning: array_pad(): You may only pad up to 1048576 elements at a time in %s
on line %d
bool(false)
Done
--UEXPECTF--
Warning: array_pad() expects exactly 3 parameters, 0 given in %s on line %d
NULL
Warning: array_pad() expects exactly 3 parameters, 1 given in %s on line %d
NULL
Warning: array_pad() expects exactly 3 parameters, 2 given in %s on line %d
NULL
array(1) {
[0]=>
int(0)
}
array(0) {
}
array(1) {
[0]=>
int(0)
}
array(5) {
[0]=>
unicode(0) ""
[1]=>
int(-1)
[2]=>
float(2)
[3]=>
int(0)
[4]=>
int(0)
}
array(5) {
[0]=>
unicode(0) ""
[1]=>
int(-1)
[2]=>
float(2)
[3]=>
array(0) {
}
[4]=>
array(0) {
}
}
array(3) {
[0]=>
unicode(0) ""
[1]=>
int(-1)
[2]=>
float(2)
}
array(3) {
[0]=>
unicode(0) ""
[1]=>
int(-1)
[2]=>
float(2)
}
array(4) {
[0]=>
array(0) {
}
[1]=>
unicode(0) ""
[2]=>
int(-1)
[3]=>
float(2)
}
Warning: array_pad(): You may only pad up to 1048576 elements at a time in %s
on line %d
bool(false)
Done
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php