Skip to content

Commit 864bfa0

Browse files
committed
Promote warnings to errors in array_pad()
1 parent 5b8e12a commit 864bfa0

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

ext/standard/array.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4323,7 +4323,7 @@ PHP_FUNCTION(array_reverse)
43234323
}
43244324
/* }}} */
43254325

4326-
/* {{{ proto array|false array_pad(array input, int pad_size, mixed pad_value)
4326+
/* {{{ proto array array_pad(array input, int pad_size, mixed pad_value)
43274327
Returns a copy of input array padded with pad_value to size pad_size */
43284328
PHP_FUNCTION(array_pad)
43294329
{
@@ -4347,8 +4347,8 @@ PHP_FUNCTION(array_pad)
43474347
input_size = zend_hash_num_elements(Z_ARRVAL_P(input));
43484348
pad_size_abs = ZEND_ABS(pad_size);
43494349
if (pad_size_abs < 0 || pad_size_abs - input_size > Z_L(1048576)) {
4350-
php_error_docref(NULL, E_WARNING, "You may only pad up to 1048576 elements at a time");
4351-
RETURN_FALSE;
4350+
zend_throw_error(NULL, "Only 1048576 elements may be pad up at a time.");
4351+
return;
43524352
}
43534353

43544354
if (input_size >= pad_size_abs) {

ext/standard/tests/array/array_pad.phpt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,17 @@ var_dump(array_pad(array("", -1, 2.0), 5, array()));
1212
var_dump(array_pad(array("", -1, 2.0), 2, array()));
1313
var_dump(array_pad(array("", -1, 2.0), -3, array()));
1414
var_dump(array_pad(array("", -1, 2.0), -4, array()));
15-
var_dump(array_pad(array("", -1, 2.0), 2000000, 0));
1615

17-
echo "Done\n";
16+
try {
17+
var_dump(array_pad(array("", -1, 2.0), 2000000, 0));
18+
} catch (Error $e) {
19+
echo $e->getMessage() . "\n";
20+
}
21+
1822
?>
19-
--EXPECTF--
23+
24+
DONE
25+
--EXPECT--
2026
array(1) {
2127
[0]=>
2228
int(0)
@@ -80,7 +86,6 @@ array(4) {
8086
[3]=>
8187
float(2)
8288
}
89+
Only 1048576 elements may be pad up at a time.
8390

84-
Warning: array_pad(): You may only pad up to 1048576 elements at a time in %s on line %d
85-
bool(false)
86-
Done
91+
DONE

0 commit comments

Comments
 (0)