Skip to content

Commit ae6f45a

Browse files
committed
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. Closes GH-5171.
1 parent 9e56502 commit ae6f45a

File tree

13 files changed

+23
-164
lines changed

13 files changed

+23
-164
lines changed

Zend/tests/bug35163_2.phpt

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,7 @@ array(3) {
1616
[0]=>
1717
int(2)
1818
[1]=>
19-
&array(3) {
20-
[0]=>
21-
int(2)
22-
[1]=>
23-
*RECURSION*
24-
[2]=>
25-
*RECURSION*
26-
}
19+
*RECURSION*
2720
[2]=>
28-
&array(3) {
29-
[0]=>
30-
int(2)
31-
[1]=>
32-
*RECURSION*
33-
[2]=>
34-
*RECURSION*
35-
}
21+
*RECURSION*
3622
}

Zend/tests/closure_026.phpt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,7 @@ array(1) {
4747
["this"]=>
4848
object(foo)#%d (1) {
4949
["a"]=>
50-
array(1) {
51-
[0]=>
52-
*RECURSION*
53-
}
50+
*RECURSION*
5451
}
5552
}
5653
}

Zend/tests/foreach_002.phpt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,5 @@ foreach (($a = array('a' => array('a' => &$a))) as $a) {
1515
--EXPECT--
1616
array(1) {
1717
["a"]=>
18-
&array(1) {
19-
["a"]=>
20-
*RECURSION*
21-
}
18+
*RECURSION*
2219
}

Zend/tests/gc_004.phpt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ echo "ok\n"
1414
--EXPECT--
1515
array(1) {
1616
[0]=>
17-
&array(1) {
18-
[0]=>
19-
*RECURSION*
20-
}
17+
*RECURSION*
2118
}
2219
int(1)
2320
ok

Zend/tests/gc_007.phpt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ echo "ok\n"
1515
--EXPECT--
1616
array(1) {
1717
[0]=>
18-
&array(1) {
19-
[0]=>
20-
*RECURSION*
21-
}
18+
*RECURSION*
2219
}
2320
int(0)
2421
int(1)

Zend/tests/gc_010.phpt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@ echo "ok\n"
1515
--EXPECT--
1616
array(1) {
1717
[0]=>
18-
&array(1) {
19-
[0]=>
20-
*RECURSION*
21-
}
18+
*RECURSION*
2219
}
2320
int(1)
2421
ok

ext/json/tests/003.phpt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ echo "Done\n";
2525
--EXPECTF--
2626
array(1) {
2727
[0]=>
28-
&array(1) {
29-
[0]=>
30-
*RECURSION*
31-
}
28+
*RECURSION*
3229
}
3330

3431
bool(false)

ext/mbstring/tests/bug66964.phpt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,5 @@ array(5) {
4949
[3]=>
5050
string(21) "日本語テキスト"
5151
[4]=>
52-
&array(5) {
53-
[0]=>
54-
string(21) "日本語テキスト"
55-
[1]=>
56-
string(21) "日本語テキスト"
57-
[2]=>
58-
string(21) "日本語テキスト"
59-
[3]=>
60-
string(21) "日本語テキスト"
61-
[4]=>
62-
*RECURSION*
63-
}
52+
*RECURSION*
6453
}

ext/standard/tests/array/array_map_variation2.phpt

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,7 @@ array(4) {
3838
[0]=>
3939
&string(2) "v1"
4040
[1]=>
41-
&array(4) {
42-
["k1"]=>
43-
&string(2) "v1"
44-
["k2"]=>
45-
string(2) "v2"
46-
[0]=>
47-
&string(2) "v1"
48-
[1]=>
49-
*RECURSION*
50-
}
41+
*RECURSION*
5142
}
5243
array(4) {
5344
["k1"]=>
@@ -91,16 +82,7 @@ array(4) {
9182
[0]=>
9283
&string(2) "v1"
9384
[1]=>
94-
&array(4) {
95-
["k1"]=>
96-
&string(2) "v1"
97-
["k2"]=>
98-
string(2) "v2"
99-
[0]=>
100-
&string(2) "v1"
101-
[1]=>
102-
*RECURSION*
103-
}
85+
*RECURSION*
10486
}
10587
array(4) {
10688
[0]=>
@@ -141,16 +123,7 @@ array(4) {
141123
[0]=>
142124
&string(2) "v1"
143125
[1]=>
144-
&array(4) {
145-
["k1"]=>
146-
&string(2) "v1"
147-
["k2"]=>
148-
string(2) "v2"
149-
[0]=>
150-
&string(2) "v1"
151-
[1]=>
152-
*RECURSION*
153-
}
126+
*RECURSION*
154127
}
155128
array(4) {
156129
[0]=>

ext/standard/tests/array/natcasesort_variation7.phpt

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,7 @@ array(5) {
3434
[3]=>
3535
string(1) "2"
3636
[4]=>
37-
&array(5) {
38-
[0]=>
39-
int(1)
40-
[1]=>
41-
float(3)
42-
[2]=>
43-
string(4) "zero"
44-
[3]=>
45-
string(1) "2"
46-
[4]=>
47-
*RECURSION*
48-
}
37+
*RECURSION*
4938
}
5039
bool(true)
5140
array(5) {
@@ -56,18 +45,7 @@ array(5) {
5645
[1]=>
5746
float(3)
5847
[4]=>
59-
&array(5) {
60-
[0]=>
61-
int(1)
62-
[3]=>
63-
string(1) "2"
64-
[1]=>
65-
float(3)
66-
[4]=>
67-
*RECURSION*
68-
[2]=>
69-
string(4) "zero"
70-
}
48+
*RECURSION*
7149
[2]=>
7250
string(4) "zero"
7351
}

ext/standard/tests/serialize/serialization_arrays_004.phpt

Lines changed: 6 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,7 @@ echo "Done";
5555
--- 1 refs container:
5656
array(3) {
5757
[0]=>
58-
&array(3) {
59-
[0]=>
60-
*RECURSION*
61-
[1]=>
62-
int(1)
63-
[2]=>
64-
int(1)
65-
}
58+
*RECURSION*
6659
[1]=>
6760
int(1)
6861
[2]=>
@@ -113,23 +106,9 @@ array(3) {
113106
--- 1,2 ref container:
114107
array(3) {
115108
[0]=>
116-
&array(3) {
117-
[0]=>
118-
*RECURSION*
119-
[1]=>
120-
*RECURSION*
121-
[2]=>
122-
int(1)
123-
}
109+
*RECURSION*
124110
[1]=>
125-
&array(3) {
126-
[0]=>
127-
*RECURSION*
128-
[1]=>
129-
*RECURSION*
130-
[2]=>
131-
int(1)
132-
}
111+
*RECURSION*
133112
[2]=>
134113
int(1)
135114
}
@@ -185,32 +164,11 @@ array(3) {
185164
--- 1,2,3 ref container:
186165
array(3) {
187166
[0]=>
188-
&array(3) {
189-
[0]=>
190-
*RECURSION*
191-
[1]=>
192-
*RECURSION*
193-
[2]=>
194-
*RECURSION*
195-
}
167+
*RECURSION*
196168
[1]=>
197-
&array(3) {
198-
[0]=>
199-
*RECURSION*
200-
[1]=>
201-
*RECURSION*
202-
[2]=>
203-
*RECURSION*
204-
}
169+
*RECURSION*
205170
[2]=>
206-
&array(3) {
207-
[0]=>
208-
*RECURSION*
209-
[1]=>
210-
*RECURSION*
211-
[2]=>
212-
*RECURSION*
213-
}
171+
*RECURSION*
214172
}
215173
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;}"
216174
array(3) {

ext/standard/tests/serialize/serialization_arrays_005.phpt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -435,14 +435,7 @@ array(3) {
435435
[0]=>
436436
int(1)
437437
[1]=>
438-
&array(3) {
439-
[0]=>
440-
int(1)
441-
[1]=>
442-
int(1)
443-
[2]=>
444-
*RECURSION*
445-
}
438+
*RECURSION*
446439
}
447440
}
448441
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;}}}"

ext/standard/var.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ PHPAPI void php_var_dump(zval *struc, int level) /* {{{ */
123123
break;
124124
case IS_ARRAY:
125125
myht = Z_ARRVAL_P(struc);
126-
if (level > 1 && !(GC_FLAGS(myht) & GC_IMMUTABLE)) {
126+
if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
127127
if (GC_IS_RECURSIVE(myht)) {
128128
PUTS("*RECURSION*\n");
129129
return;
@@ -136,7 +136,7 @@ PHPAPI void php_var_dump(zval *struc, int level) /* {{{ */
136136
ZEND_HASH_FOREACH_KEY_VAL_IND(myht, num, key, val) {
137137
php_array_element_dump(val, num, key, level);
138138
} ZEND_HASH_FOREACH_END();
139-
if (level > 1 && !(GC_FLAGS(myht) & GC_IMMUTABLE)) {
139+
if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) {
140140
GC_UNPROTECT_RECURSION(myht);
141141
}
142142
if (level > 1) {

0 commit comments

Comments
 (0)