]> granicus.if.org Git - php/commitdiff
Promote warnings to errors in compact()
authorGeorge Peter Banyard <girgias@php.net>
Wed, 21 Aug 2019 00:43:24 +0000 (02:43 +0200)
committerJoe Watkins <krakjoe@php.net>
Thu, 29 Aug 2019 14:02:20 +0000 (16:02 +0200)
ext/standard/array.c
ext/standard/tests/array/compact_variation1.phpt

index 3355c1135fbda8c4d2d58764dff1d0b212031531..083d14ec3c6551a701887a68d4f30b9c39179a6b 100644 (file)
@@ -2556,7 +2556,7 @@ static void php_compact_var(HashTable *eg_active_symbol_table, zval *return_valu
        } else if (Z_TYPE_P(entry) == IS_ARRAY) {
            if (Z_REFCOUNTED_P(entry)) {
                        if (Z_IS_RECURSIVE_P(entry)) {
-                               php_error_docref(NULL, E_WARNING, "recursion detected");
+                               zend_throw_error(NULL, "Recursion detected");
                                return;
                        }
                        Z_PROTECT_RECURSION_P(entry);
index d2b9fc45df0c70a87276842fd571ee501fa4aafb..9201bc5aa11590fdc08f888c5b1c3a08b98b92e2 100644 (file)
@@ -10,7 +10,7 @@ Test compact() function : usage variations  - arrays containing references.
 /*
 * compact variations - arrays with references
 */
-echo "*** Testing compact() : usage variations  - arrays containg references ***\n";
+echo "*** Testing compact() : usage variations  - arrays containing references ***\n";
 $a = 1;
 $b = 2;
 $c = 3;
@@ -20,31 +20,34 @@ $arr2 = array("a", array(array(array("b"))));
 $arr2[1][0][0][] = &$arr2;
 $arr2[1][0][0][] = &$arr2[1];
 $arr3 = array(&$string);
-var_dump(compact($arr1));
-var_dump(compact($arr2));
-var_dump(compact($arr3));
-echo "Done";
-?>
---EXPECTF--
-*** Testing compact() : usage variations  - arrays containg references ***
 
-Warning: compact(): recursion detected in %s on line %d
-array(1) {
-  ["a"]=>
-  int(1)
+try {
+    var_dump(compact($arr1));
+} catch (\Error $e) {
+    echo $e->getMessage() . "\n";
 }
 
-Warning: compact(): recursion detected in %s on line %d
+try {
+    var_dump(compact($arr2));
+} catch (\Error $e) {
+    echo $e->getMessage() . "\n";
+}
 
-Warning: compact(): recursion detected in %s on line %d
-array(2) {
-  ["a"]=>
-  int(1)
-  ["b"]=>
-  int(2)
+try {
+    var_dump(compact($arr3));
+} catch (\Error $e) {
+    echo $e->getMessage() . "\n";
 }
+?>
+
+DONE
+--EXPECT--
+*** Testing compact() : usage variations  - arrays containing references ***
+Recursion detected
+Recursion detected
 array(1) {
   ["c"]=>
   int(3)
 }
-Done
+
+DONE