From eca1911b72e034e0e807ce3786a6a02ca17d71b9 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Wed, 15 Nov 2006 22:10:19 +0000 Subject: [PATCH] fix leak, add test --- ext/standard/array.c | 1 + ext/standard/tests/array/array_pad.phpt | 97 +++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 ext/standard/tests/array/array_pad.phpt diff --git a/ext/standard/array.c b/ext/standard/array.c index 29aba37ca72..45774fe2aa1 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 00000000000..96a45033110 --- /dev/null +++ b/ext/standard/tests/array/array_pad.phpt @@ -0,0 +1,97 @@ +--TEST-- +array_pad() tests +--FILE-- + +--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