xref: /PHP-8.4/Zend/tests/bug70547.phpt (revision d65d3f52)
1--TEST--
2Bug #70547 (unsetting function variables corrupts backtrace)
3--FILE--
4<?php
5function brokenTrace($arg1, &$arg2, $arg3){
6    backtraceWrapper();
7    var_dump(func_get_args());
8    unset($arg3);
9    var_dump(func_get_arg(0));
10    var_dump(func_get_arg(1));
11    var_dump(func_get_arg(2));
12    var_dump(func_get_arg(3));
13    backtraceWrapper();
14    unset($arg1);
15    var_dump(func_get_args());
16    backtraceWrapper();
17    unset($arg2);
18    backtraceWrapper();
19    var_dump(func_get_arg(0));
20    var_dump(func_get_arg(1));
21    var_dump(func_get_arg(2));
22    var_dump(func_get_arg(3));
23}
24$arg2 = "2nd";
25brokenTrace("1st", $arg2, "3th", "4th");
26function backtraceWrapper(){
27    $bt = debug_backtrace();
28    var_dump($bt[1]['args']);
29}
30?>
31--EXPECT--
32array(4) {
33  [0]=>
34  string(3) "1st"
35  [1]=>
36  string(3) "2nd"
37  [2]=>
38  string(3) "3th"
39  [3]=>
40  string(3) "4th"
41}
42array(4) {
43  [0]=>
44  string(3) "1st"
45  [1]=>
46  string(3) "2nd"
47  [2]=>
48  string(3) "3th"
49  [3]=>
50  string(3) "4th"
51}
52string(3) "1st"
53string(3) "2nd"
54NULL
55string(3) "4th"
56array(4) {
57  [0]=>
58  string(3) "1st"
59  [1]=>
60  string(3) "2nd"
61  [2]=>
62  NULL
63  [3]=>
64  string(3) "4th"
65}
66array(4) {
67  [0]=>
68  NULL
69  [1]=>
70  string(3) "2nd"
71  [2]=>
72  NULL
73  [3]=>
74  string(3) "4th"
75}
76array(4) {
77  [0]=>
78  NULL
79  [1]=>
80  string(3) "2nd"
81  [2]=>
82  NULL
83  [3]=>
84  string(3) "4th"
85}
86array(4) {
87  [0]=>
88  NULL
89  [1]=>
90  NULL
91  [2]=>
92  NULL
93  [3]=>
94  string(3) "4th"
95}
96NULL
97NULL
98NULL
99string(3) "4th"
100