From 5eeffc3ac73b32bdbdc9bb550064f0502897eefa Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Wed, 12 Feb 2020 10:27:28 +0100 Subject: [PATCH] var_dump(): Don't skip recursion detection on first level This is confusing. The current output doesn't make it clear that we're in fact recursing to the top-level structure. --- Zend/tests/bug35163_2.phpt | 18 +------ Zend/tests/closure_026.phpt | 5 +- Zend/tests/foreach_002.phpt | 5 +- Zend/tests/gc_004.phpt | 5 +- Zend/tests/gc_007.phpt | 5 +- Zend/tests/gc_010.phpt | 5 +- ext/json/tests/003.phpt | 5 +- ext/mbstring/tests/bug66964.phpt | 13 +---- .../tests/array/array_map_variation2.phpt | 33 ++---------- .../tests/array/natcasesort_variation7.phpt | 26 +-------- .../serialize/serialization_arrays_004.phpt | 54 +++---------------- .../serialize/serialization_arrays_005.phpt | 9 +--- ext/standard/var.c | 4 +- 13 files changed, 23 insertions(+), 164 deletions(-) diff --git a/Zend/tests/bug35163_2.phpt b/Zend/tests/bug35163_2.phpt index 01387204c82de..81bf853266d0a 100644 --- a/Zend/tests/bug35163_2.phpt +++ b/Zend/tests/bug35163_2.phpt @@ -16,21 +16,7 @@ array(3) { [0]=> int(2) [1]=> - &array(3) { - [0]=> - int(2) - [1]=> - *RECURSION* - [2]=> - *RECURSION* - } + *RECURSION* [2]=> - &array(3) { - [0]=> - int(2) - [1]=> - *RECURSION* - [2]=> - *RECURSION* - } + *RECURSION* } diff --git a/Zend/tests/closure_026.phpt b/Zend/tests/closure_026.phpt index 62702a5e03d6c..0dba62fcb9a16 100644 --- a/Zend/tests/closure_026.phpt +++ b/Zend/tests/closure_026.phpt @@ -47,10 +47,7 @@ array(1) { ["this"]=> object(foo)#%d (1) { ["a"]=> - array(1) { - [0]=> - *RECURSION* - } + *RECURSION* } } } diff --git a/Zend/tests/foreach_002.phpt b/Zend/tests/foreach_002.phpt index 2daa48c3f6b55..23e21d640bc2e 100644 --- a/Zend/tests/foreach_002.phpt +++ b/Zend/tests/foreach_002.phpt @@ -15,8 +15,5 @@ foreach (($a = array('a' => array('a' => &$a))) as $a) { --EXPECT-- array(1) { ["a"]=> - &array(1) { - ["a"]=> - *RECURSION* - } + *RECURSION* } diff --git a/Zend/tests/gc_004.phpt b/Zend/tests/gc_004.phpt index 1b6f70abe6803..714ad6aa9b4d9 100644 --- a/Zend/tests/gc_004.phpt +++ b/Zend/tests/gc_004.phpt @@ -14,10 +14,7 @@ echo "ok\n" --EXPECT-- array(1) { [0]=> - &array(1) { - [0]=> - *RECURSION* - } + *RECURSION* } int(1) ok diff --git a/Zend/tests/gc_007.phpt b/Zend/tests/gc_007.phpt index a018e4846df6e..d7a548aff99c7 100644 --- a/Zend/tests/gc_007.phpt +++ b/Zend/tests/gc_007.phpt @@ -15,10 +15,7 @@ echo "ok\n" --EXPECT-- array(1) { [0]=> - &array(1) { - [0]=> - *RECURSION* - } + *RECURSION* } int(0) int(1) diff --git a/Zend/tests/gc_010.phpt b/Zend/tests/gc_010.phpt index af2dda3fe1ee3..756c8ebc2a7a8 100644 --- a/Zend/tests/gc_010.phpt +++ b/Zend/tests/gc_010.phpt @@ -15,10 +15,7 @@ echo "ok\n" --EXPECT-- array(1) { [0]=> - &array(1) { - [0]=> - *RECURSION* - } + *RECURSION* } int(1) ok diff --git a/ext/json/tests/003.phpt b/ext/json/tests/003.phpt index 3248689bf94d0..e0a5e469787c4 100644 --- a/ext/json/tests/003.phpt +++ b/ext/json/tests/003.phpt @@ -25,10 +25,7 @@ echo "Done\n"; --EXPECTF-- array(1) { [0]=> - &array(1) { - [0]=> - *RECURSION* - } + *RECURSION* } bool(false) diff --git a/ext/mbstring/tests/bug66964.phpt b/ext/mbstring/tests/bug66964.phpt index c33bb67c49e20..b4e87a6ae1ba0 100644 --- a/ext/mbstring/tests/bug66964.phpt +++ b/ext/mbstring/tests/bug66964.phpt @@ -49,16 +49,5 @@ array(5) { [3]=> string(21) "日本語テキスト" [4]=> - &array(5) { - [0]=> - string(21) "日本語テキスト" - [1]=> - string(21) "日本語テキスト" - [2]=> - string(21) "日本語テキスト" - [3]=> - string(21) "日本語テキスト" - [4]=> - *RECURSION* - } + *RECURSION* } diff --git a/ext/standard/tests/array/array_map_variation2.phpt b/ext/standard/tests/array/array_map_variation2.phpt index b7d22e0825bd2..79eef00fc4f48 100644 --- a/ext/standard/tests/array/array_map_variation2.phpt +++ b/ext/standard/tests/array/array_map_variation2.phpt @@ -38,16 +38,7 @@ array(4) { [0]=> &string(2) "v1" [1]=> - &array(4) { - ["k1"]=> - &string(2) "v1" - ["k2"]=> - string(2) "v2" - [0]=> - &string(2) "v1" - [1]=> - *RECURSION* - } + *RECURSION* } array(4) { ["k1"]=> @@ -91,16 +82,7 @@ array(4) { [0]=> &string(2) "v1" [1]=> - &array(4) { - ["k1"]=> - &string(2) "v1" - ["k2"]=> - string(2) "v2" - [0]=> - &string(2) "v1" - [1]=> - *RECURSION* - } + *RECURSION* } array(4) { [0]=> @@ -141,16 +123,7 @@ array(4) { [0]=> &string(2) "v1" [1]=> - &array(4) { - ["k1"]=> - &string(2) "v1" - ["k2"]=> - string(2) "v2" - [0]=> - &string(2) "v1" - [1]=> - *RECURSION* - } + *RECURSION* } array(4) { [0]=> diff --git a/ext/standard/tests/array/natcasesort_variation7.phpt b/ext/standard/tests/array/natcasesort_variation7.phpt index 713f7c959c669..fb731b101c7a6 100644 --- a/ext/standard/tests/array/natcasesort_variation7.phpt +++ b/ext/standard/tests/array/natcasesort_variation7.phpt @@ -34,18 +34,7 @@ array(5) { [3]=> string(1) "2" [4]=> - &array(5) { - [0]=> - int(1) - [1]=> - float(3) - [2]=> - string(4) "zero" - [3]=> - string(1) "2" - [4]=> - *RECURSION* - } + *RECURSION* } bool(true) array(5) { @@ -56,18 +45,7 @@ array(5) { [1]=> float(3) [4]=> - &array(5) { - [0]=> - int(1) - [3]=> - string(1) "2" - [1]=> - float(3) - [4]=> - *RECURSION* - [2]=> - string(4) "zero" - } + *RECURSION* [2]=> string(4) "zero" } diff --git a/ext/standard/tests/serialize/serialization_arrays_004.phpt b/ext/standard/tests/serialize/serialization_arrays_004.phpt index e2e383ef82af3..b3d630ecf47c4 100644 --- a/ext/standard/tests/serialize/serialization_arrays_004.phpt +++ b/ext/standard/tests/serialize/serialization_arrays_004.phpt @@ -55,14 +55,7 @@ echo "Done"; --- 1 refs container: array(3) { [0]=> - &array(3) { - [0]=> - *RECURSION* - [1]=> - int(1) - [2]=> - int(1) - } + *RECURSION* [1]=> int(1) [2]=> @@ -113,23 +106,9 @@ array(3) { --- 1,2 ref container: array(3) { [0]=> - &array(3) { - [0]=> - *RECURSION* - [1]=> - *RECURSION* - [2]=> - int(1) - } + *RECURSION* [1]=> - &array(3) { - [0]=> - *RECURSION* - [1]=> - *RECURSION* - [2]=> - int(1) - } + *RECURSION* [2]=> int(1) } @@ -185,32 +164,11 @@ array(3) { --- 1,2,3 ref container: array(3) { [0]=> - &array(3) { - [0]=> - *RECURSION* - [1]=> - *RECURSION* - [2]=> - *RECURSION* - } + *RECURSION* [1]=> - &array(3) { - [0]=> - *RECURSION* - [1]=> - *RECURSION* - [2]=> - *RECURSION* - } + *RECURSION* [2]=> - &array(3) { - [0]=> - *RECURSION* - [1]=> - *RECURSION* - [2]=> - *RECURSION* - } + *RECURSION* } string(56) "a:3:{i:0;a:3:{i:0;R:2;i:1;R:2;i:2;R:2;}i:1;R:2;i:2;R:2;}" array(3) { diff --git a/ext/standard/tests/serialize/serialization_arrays_005.phpt b/ext/standard/tests/serialize/serialization_arrays_005.phpt index b1f300b308b0f..93e3ae513560c 100644 --- a/ext/standard/tests/serialize/serialization_arrays_005.phpt +++ b/ext/standard/tests/serialize/serialization_arrays_005.phpt @@ -435,14 +435,7 @@ array(3) { [0]=> int(1) [1]=> - &array(3) { - [0]=> - int(1) - [1]=> - int(1) - [2]=> - *RECURSION* - } + *RECURSION* } } string(74) "a:3:{i:0;i:1;i:1;i:1;i:2;a:2:{i:0;i:1;i:1;a:3:{i:0;i:1;i:1;i:1;i:2;R:4;}}}" diff --git a/ext/standard/var.c b/ext/standard/var.c index 70a70b0f6e957..3f7db8faafd66 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -123,7 +123,7 @@ PHPAPI void php_var_dump(zval *struc, int level) /* {{{ */ break; case IS_ARRAY: myht = Z_ARRVAL_P(struc); - if (level > 1 && !(GC_FLAGS(myht) & GC_IMMUTABLE)) { + if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) { if (GC_IS_RECURSIVE(myht)) { PUTS("*RECURSION*\n"); return; @@ -136,7 +136,7 @@ PHPAPI void php_var_dump(zval *struc, int level) /* {{{ */ ZEND_HASH_FOREACH_KEY_VAL_IND(myht, num, key, val) { php_array_element_dump(val, num, key, level); } ZEND_HASH_FOREACH_END(); - if (level > 1 && !(GC_FLAGS(myht) & GC_IMMUTABLE)) { + if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) { GC_UNPROTECT_RECURSION(myht); } if (level > 1) {