ZVAL_DEREF(dest_zval);
thash = Z_TYPE_P(dest_zval) == IS_ARRAY ? Z_ARRVAL_P(dest_zval) : NULL;
if ((thash && GC_IS_RECURSIVE(thash)) || (src_entry == dest_entry && Z_ISREF_P(dest_entry) && (Z_REFCOUNT_P(dest_entry) % 2))) {
- php_error_docref(NULL, E_WARNING, "recursion detected");
+ zend_throw_error(NULL, "Recursion detected");
return 0;
}
if (Z_IS_RECURSIVE_P(dest_zval) ||
Z_IS_RECURSIVE_P(src_zval) ||
(Z_ISREF_P(src_entry) && Z_ISREF_P(dest_entry) && Z_REF_P(src_entry) == Z_REF_P(dest_entry) && (Z_REFCOUNT_P(dest_entry) % 2))) {
- php_error_docref(NULL, E_WARNING, "recursion detected");
+ zend_throw_error(NULL, "Recursion detected");
return 0;
}
var_dump($data);
echo " -- Testing array_replace_recursive() w/ endless recusrsion --\n";
-$data = array_replace_recursive($array3, $array4);
+try {
+ $data = array_replace_recursive($array3, $array4);
+ var_dump($data);
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
+}
-var_dump($data);
?>
---EXPECTF--
+--EXPECT--
-- Testing array_replace() --
array(5) {
[0]=>
}
}
-- Testing array_replace_recursive() w/ endless recusrsion --
-
-Warning: array_replace_recursive(): recursion detected in %s on line %d
-array(1) {
- [0]=>
- array(1) {
- [0]=>
- array(1) {
- [0]=>
- array(0) {
- }
- }
- }
-}
+Recursion detected
$a1 = array();
$a2 = array( 'key1' => &$a1 );
$a1 = array_merge_recursive( $a1, $a2 );
-$a1 = array_merge_recursive( $a1, $a2 );
+try {
+ $a1 = array_merge_recursive( $a1, $a2 );
+} catch (\Error $e) {
+ echo $e->getMessage() . " on line " . $e->getLine() . "\n";
+}
unset( $a1, $a2 );
$x = 'foo';
unset( $a1, $a2 );
?>
---EXPECTF--
-Warning: array_merge_recursive(): recursion detected in %s on line 18
+--EXPECT--
+Recursion detected on line 19
$b=array("key1"=>array("key2"=>array()));
$b["key1"]["key2"]["key3"]=&$b;
-array_merge_recursive($a,$b);
+
+try {
+ array_merge_recursive($a,$b);
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
+}
/* Break recursion */
$a["key1"]["key2"]["key3"] = null;
$b["key1"]["key2"]["key3"] = null;
-echo "Done.\n";
?>
---EXPECTF--
-Warning: array_merge_recursive(): recursion detected in %sbug43495.php on line %d
-Done.
+
+DONE
+--EXPECT--
+Recursion detected
+
+DONE
--FILE--
<?php
-array_merge_recursive($GLOBALS, $GLOBALS)
+try {
+ array_merge_recursive($GLOBALS, $GLOBALS);
+} catch (\Error $e) {
+ echo $e->getMessage() . "\n";
+}
?>
---EXPECTF--
-Warning: array_merge_recursive(): recursion detected in %s on line %d
+--EXPECT--
+Recursion detected