summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Peter Banyard <girgias@php.net>2019-08-21 02:57:33 +0200
committerJoe Watkins <krakjoe@php.net>2019-08-29 16:02:59 +0200
commit62751b0d453ac51c559ea31d360a290081eb0c1d (patch)
tree6de7a7eca53d5991286f6c894164e72ae7af19af
parent81277a104c98476b0c427ac514cd307e75bc68da (diff)
downloadphp-git-62751b0d453ac51c559ea31d360a290081eb0c1d.tar.gz
Promote warnings to errors in array_walk(_recursive)()
-rw-r--r--ext/standard/array.c4
-rw-r--r--ext/standard/tests/array/bug70713.phpt11
2 files changed, 10 insertions, 5 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 083d14ec3c..245eeba7d8 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1399,7 +1399,7 @@ static int php_array_walk(zval *array, zval *userdata, int recursive) /* {{{ */
SEPARATE_ARRAY(zv);
thash = Z_ARRVAL_P(zv);
if (GC_IS_RECURSIVE(thash)) {
- php_error_docref(NULL, E_WARNING, "recursion detected");
+ zend_throw_error(NULL, "Recursion detected");
result = FAILURE;
break;
}
@@ -1450,7 +1450,7 @@ static int php_array_walk(zval *array, zval *userdata, int recursive) /* {{{ */
target_hash = Z_OBJPROP_P(array);
pos = zend_hash_iterator_pos(ht_iter, target_hash);
} else {
- php_error_docref(NULL, E_WARNING, "Iterated value is no longer an array or object");
+ zend_type_error("Iterated value is no longer an array or object");
result = FAILURE;
break;
}
diff --git a/ext/standard/tests/array/bug70713.phpt b/ext/standard/tests/array/bug70713.phpt
index 7cd0a0f113..f24720607d 100644
--- a/ext/standard/tests/array/bug70713.phpt
+++ b/ext/standard/tests/array/bug70713.phpt
@@ -19,8 +19,13 @@ class obj
}
$arr = array('string' => new obj);
-array_walk_recursive($arr, 'settype');
+
+try {
+ array_walk_recursive($arr, 'settype');
+} catch (\TypeError $e) {
+ echo $e->getMessage() . "\n";
+}
?>
---EXPECTF--
-Warning: array_walk_recursive(): Iterated value is no longer an array or object in %s on line %d
+--EXPECT--
+Iterated value is no longer an array or object