summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Peter Banyard <girgias@php.net>2019-08-21 01:11:44 +0200
committerGeorge Peter Banyard <girgias@php.net>2019-08-27 23:41:22 +0200
commit9fc3d5da110a12bc3b55a211408248f3e97a6a03 (patch)
treec985235c924e72bb5bdcb0de0d3e1360e3490c23
parentb91a881b326950a2952962205e71f1da141e0847 (diff)
downloadphp-git-9fc3d5da110a12bc3b55a211408248f3e97a6a03.tar.gz
Promote warnings to errors in max()
-rw-r--r--ext/standard/array.c12
-rw-r--r--ext/standard/tests/array/max.phpt34
2 files changed, 29 insertions, 17 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 709ab14dc5..5f3830d899 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1287,7 +1287,9 @@ PHP_FUNCTION(min)
}
/* }}} */
-/* {{{ proto mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])
+/* {{{
+ * proto mixed max(array values)
+ * proto mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])
Return the highest value in an array or a series of arguments */
PHP_FUNCTION(max)
{
@@ -1303,14 +1305,14 @@ PHP_FUNCTION(max)
zval *result;
if (Z_TYPE(args[0]) != IS_ARRAY) {
- php_error_docref(NULL, E_WARNING, "When only one parameter is given, it must be an array");
- RETVAL_NULL();
+ zend_type_error("When only one parameter is given, it must be an array");
+ return;
} else {
if ((result = zend_hash_minmax(Z_ARRVAL(args[0]), php_array_data_compare, 1)) != NULL) {
ZVAL_COPY_DEREF(return_value, result);
} else {
- php_error_docref(NULL, E_WARNING, "Array must contain at least one element");
- RETVAL_FALSE;
+ zend_throw_error(NULL, "Array must contain at least one element");
+ return;
}
}
} else {
diff --git a/ext/standard/tests/array/max.phpt b/ext/standard/tests/array/max.phpt
index df471ef255..9e6448cd52 100644
--- a/ext/standard/tests/array/max.phpt
+++ b/ext/standard/tests/array/max.phpt
@@ -5,9 +5,24 @@ precision=14
--FILE--
<?php
-var_dump(max(1));
-var_dump(max(array()));
-var_dump(max(new stdclass));
+try {
+ var_dump(max(1));
+} catch (\TypeError $e) {
+ echo $e->getMessage() . "\n";
+}
+
+try {
+ var_dump(max(array()));
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
+}
+
+try {
+ var_dump(max(new stdclass));
+} catch (\TypeError $e) {
+ echo $e->getMessage() . "\n";
+}
+
var_dump(max(2,1,2));
var_dump(max(2.1,2.11,2.09));
var_dump(max("", "t", "b"));
@@ -18,15 +33,10 @@ var_dump(max(0, true, false, true));
echo "Done\n";
?>
---EXPECTF--
-Warning: max(): When only one parameter is given, it must be an array in %s on line %d
-NULL
-
-Warning: max(): Array must contain at least one element in %s on line %d
-bool(false)
-
-Warning: max(): When only one parameter is given, it must be an array in %s on line %d
-NULL
+--EXPECT--
+When only one parameter is given, it must be an array
+Array must contain at least one element
+When only one parameter is given, it must be an array
int(2)
float(2.11)
string(1) "t"