xref: /PHP-8.2/ext/opcache/tests/bug65665.phpt (revision e9f783fc)
1--TEST--
2Bug #65665 (Exception not properly caught when opcache enabled)
3--INI--
4opcache.enable=1
5opcache.enable_cli=1
6--EXTENSIONS--
7opcache
8--FILE--
9<?php
10function foo() {
11    try
12    {
13        switch (1)
14        {
15        case 0:
16            try
17            {
18
19            }
20            catch (Exception $e)
21            {
22
23            }
24
25            break;
26
27        case 1:
28            try
29            {
30                throw new Exception('aaa');
31            }
32            catch (Exception $e)
33            {
34                echo "correct\n";
35            }
36
37            break;
38        }
39    }
40    catch (Exception $e)
41    {
42        echo "wrong\n";
43    }
44    return;
45}
46
47function foo1() {
48    try
49    {
50        switch (1)
51        {
52        case 0:
53            try
54            {
55
56            }
57            catch (Exception $e)
58            {
59dummy:
60                echo "ect\n";
61            }
62
63            break;
64
65        case 1:
66            try
67            {
68                throw new Exception('aaa');
69            }
70            catch (Exception $e)
71            {
72                echo "corr";
73                goto dummy;
74            }
75            break;
76        }
77    }
78    catch (Exception $e)
79    {
80        echo "wrong\n";
81    }
82    return;
83}
84
85function foo2() {
86    try
87    {
88        switch (1)
89        {
90        case 0:
91            try
92            {
93dummy:
94                throw new Exception('aaa');
95            }
96            catch (Exception $e)
97            {
98                echo "correct\n";
99            }
100
101            break;
102
103        case 1:
104            goto dummy;
105            break;
106        }
107    }
108    catch (Exception $e)
109    {
110        echo "wrong\n";
111    }
112    return;
113}
114foo();foo1();foo2();
115?>
116--EXPECT--
117correct
118correct
119correct
120