From c75016a18511e2455f3f4335fb9096c201ab611f Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 21 Aug 2019 02:12:45 +0200 Subject: [PATCH 1/2] Promote warnings to errors in array_pad() --- ext/standard/array.c | 6 +++--- ext/standard/tests/array/array_pad.phpt | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index 164b7da046993..2a87c95fe5f83 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4325,7 +4325,7 @@ PHP_FUNCTION(array_reverse) } /* }}} */ -/* {{{ proto array|false array_pad(array input, int pad_size, mixed pad_value) +/* {{{ proto array array_pad(array input, int pad_size, mixed pad_value) Returns a copy of input array padded with pad_value to size pad_size */ PHP_FUNCTION(array_pad) { @@ -4349,8 +4349,8 @@ PHP_FUNCTION(array_pad) input_size = zend_hash_num_elements(Z_ARRVAL_P(input)); pad_size_abs = ZEND_ABS(pad_size); if (pad_size_abs < 0 || pad_size_abs - input_size > Z_L(1048576)) { - php_error_docref(NULL, E_WARNING, "You may only pad up to 1048576 elements at a time"); - RETURN_FALSE; + zend_throw_error(NULL, "Only 1048576 elements may be pad up at a time."); + return; } if (input_size >= pad_size_abs) { diff --git a/ext/standard/tests/array/array_pad.phpt b/ext/standard/tests/array/array_pad.phpt index fd5fa520b62c8..fdde153e20a64 100644 --- a/ext/standard/tests/array/array_pad.phpt +++ b/ext/standard/tests/array/array_pad.phpt @@ -12,11 +12,17 @@ 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"; +try { + var_dump(array_pad(array("", -1, 2.0), 2000000, 0)); +} catch (Error $e) { + echo $e->getMessage() . "\n"; +} + ?> ---EXPECTF-- + +DONE +--EXPECT-- array(1) { [0]=> int(0) @@ -80,7 +86,6 @@ array(4) { [3]=> float(2) } +Only 1048576 elements may be pad up at a time. -Warning: array_pad(): You may only pad up to 1048576 elements at a time in %s on line %d -bool(false) -Done +DONE From dd9627bd7934accbe0524c6341f5b303a01a9117 Mon Sep 17 00:00:00 2001 From: George Peter Banyard Date: Wed, 21 Aug 2019 18:32:52 +0200 Subject: [PATCH 2/2] Revert message change --- ext/standard/array.c | 2 +- ext/standard/tests/array/array_pad.phpt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index 2a87c95fe5f83..aba972e4d49e7 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4349,7 +4349,7 @@ PHP_FUNCTION(array_pad) input_size = zend_hash_num_elements(Z_ARRVAL_P(input)); pad_size_abs = ZEND_ABS(pad_size); if (pad_size_abs < 0 || pad_size_abs - input_size > Z_L(1048576)) { - zend_throw_error(NULL, "Only 1048576 elements may be pad up at a time."); + zend_throw_error(NULL, "You may only pad up to 1048576 elements at a time"); return; } diff --git a/ext/standard/tests/array/array_pad.phpt b/ext/standard/tests/array/array_pad.phpt index fdde153e20a64..ce6e1b2b040af 100644 --- a/ext/standard/tests/array/array_pad.phpt +++ b/ext/standard/tests/array/array_pad.phpt @@ -86,6 +86,6 @@ array(4) { [3]=> float(2) } -Only 1048576 elements may be pad up at a time. +You may only pad up to 1048576 elements at a time DONE