]> granicus.if.org Git - php/commitdiff
Promote warnings to errors in min()
authorGeorge Peter Banyard <girgias@php.net>
Tue, 20 Aug 2019 23:08:59 +0000 (01:08 +0200)
committerGeorge Peter Banyard <girgias@php.net>
Tue, 27 Aug 2019 21:38:22 +0000 (23:38 +0200)
ext/standard/array.c
ext/standard/tests/array/min.phpt

index 84f19c46f73f94747feba2646ac8ae6fb9cbe20f..709ab14dc537c71d5fd774dfa6b4393dc19636aa 100644 (file)
@@ -1240,7 +1240,9 @@ PHP_FUNCTION(key)
 }
 /* }}} */
 
-/* {{{ proto mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])
+/* {{{
+ * proto mixed min(array values)
+ * proto mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])
    Return the lowest value in an array or a series of arguments */
 PHP_FUNCTION(min)
 {
@@ -1256,14 +1258,14 @@ PHP_FUNCTION(min)
                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, 0)) != 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 {
index 031e9b2c96b00a66be6431af547a4d9a78eb1041..85defa6e855fbddce72279181cfce5c6c7f18cd2 100644 (file)
@@ -5,9 +5,24 @@ precision=14
 --FILE--
 <?php
 
-var_dump(min(1));
-var_dump(min(array()));
-var_dump(min(new stdclass));
+try {
+    var_dump(min(1));
+} catch (\TypeError $e) {
+    echo $e->getMessage() . "\n";
+}
+
+try {
+    var_dump(min(array()));
+} catch (\Error $e) {
+    echo $e->getMessage() . "\n";
+}
+
+try {
+    var_dump(min(new stdclass));
+} catch (\TypeError $e) {
+    echo $e->getMessage() . "\n";
+}
+
 var_dump(min(2,1,2));
 var_dump(min(2.1,2.11,2.09));
 var_dump(min("", "t", "b"));
@@ -18,15 +33,10 @@ var_dump(min(0, true, false, true));
 
 echo "Done\n";
 ?>
---EXPECTF--
-Warning: min(): When only one parameter is given, it must be an array in %s on line %d
-NULL
-
-Warning: min(): Array must contain at least one element in %s on line %d
-bool(false)
-
-Warning: min(): 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(1)
 float(2.09)
 string(0) ""