diff options
| author | Antony Dovgal <tony2001@php.net> | 2006-11-15 22:10:19 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2006-11-15 22:10:19 +0000 |
| commit | eca1911b72e034e0e807ce3786a6a02ca17d71b9 (patch) | |
| tree | e8185dc08ccd809376572196c1fac619cc5e373f /ext | |
| parent | 2eb308ff756ef04e6671357e6908c53bfe342eb6 (diff) | |
| download | php-git-eca1911b72e034e0e807ce3786a6a02ca17d71b9.tar.gz | |
fix leak, add test
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/standard/array.c | 1 | ||||
| -rw-r--r-- | ext/standard/tests/array/array_pad.phpt | 97 |
2 files changed, 98 insertions, 0 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index 29aba37ca7..45774fe2aa 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2656,6 +2656,7 @@ PHP_FUNCTION(array_pad) 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); diff --git a/ext/standard/tests/array/array_pad.phpt b/ext/standard/tests/array/array_pad.phpt new file mode 100644 index 0000000000..96a4503311 --- /dev/null +++ b/ext/standard/tests/array/array_pad.phpt @@ -0,0 +1,97 @@ +--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: Wrong parameter count for array_pad() in %s on line %d +NULL + +Warning: Wrong parameter count for array_pad() in %s on line %d +NULL + +Warning: Wrong parameter count for array_pad() 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 |
