Skip to content

Commit 9fc3d5d

Browse files
committed
Promote warnings to errors in max()
1 parent b91a881 commit 9fc3d5d

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

ext/standard/array.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,7 +1287,9 @@ PHP_FUNCTION(min)
12871287
}
12881288
/* }}} */
12891289

1290-
/* {{{ proto mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])
1290+
/* {{{
1291+
* proto mixed max(array values)
1292+
* proto mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])
12911293
Return the highest value in an array or a series of arguments */
12921294
PHP_FUNCTION(max)
12931295
{
@@ -1303,14 +1305,14 @@ PHP_FUNCTION(max)
13031305
zval *result;
13041306

13051307
if (Z_TYPE(args[0]) != IS_ARRAY) {
1306-
php_error_docref(NULL, E_WARNING, "When only one parameter is given, it must be an array");
1307-
RETVAL_NULL();
1308+
zend_type_error("When only one parameter is given, it must be an array");
1309+
return;
13081310
} else {
13091311
if ((result = zend_hash_minmax(Z_ARRVAL(args[0]), php_array_data_compare, 1)) != NULL) {
13101312
ZVAL_COPY_DEREF(return_value, result);
13111313
} else {
1312-
php_error_docref(NULL, E_WARNING, "Array must contain at least one element");
1313-
RETVAL_FALSE;
1314+
zend_throw_error(NULL, "Array must contain at least one element");
1315+
return;
13141316
}
13151317
}
13161318
} else {

ext/standard/tests/array/max.phpt

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,24 @@ precision=14
55
--FILE--
66
<?php
77

8-
var_dump(max(1));
9-
var_dump(max(array()));
10-
var_dump(max(new stdclass));
8+
try {
9+
var_dump(max(1));
10+
} catch (\TypeError $e) {
11+
echo $e->getMessage() . "\n";
12+
}
13+
14+
try {
15+
var_dump(max(array()));
16+
} catch (\Error $e) {
17+
echo $e->getMessage() . "\n";
18+
}
19+
20+
try {
21+
var_dump(max(new stdclass));
22+
} catch (\TypeError $e) {
23+
echo $e->getMessage() . "\n";
24+
}
25+
1126
var_dump(max(2,1,2));
1227
var_dump(max(2.1,2.11,2.09));
1328
var_dump(max("", "t", "b"));
@@ -18,15 +33,10 @@ var_dump(max(0, true, false, true));
1833

1934
echo "Done\n";
2035
?>
21-
--EXPECTF--
22-
Warning: max(): When only one parameter is given, it must be an array in %s on line %d
23-
NULL
24-
25-
Warning: max(): Array must contain at least one element in %s on line %d
26-
bool(false)
27-
28-
Warning: max(): When only one parameter is given, it must be an array in %s on line %d
29-
NULL
36+
--EXPECT--
37+
When only one parameter is given, it must be an array
38+
Array must contain at least one element
39+
When only one parameter is given, it must be an array
3040
int(2)
3141
float(2.11)
3242
string(1) "t"

0 commit comments

Comments
 (0)