Skip to content

Commit f14e5cf

Browse files
committed
Fix GH-16181: phpdbg: exit in exception handler reports fatal error
When running PHP code, we must not handle `UnwindExit` exceptions, but rather have to ignore them. Closes GH-16182.
1 parent 2bcf3f9 commit f14e5cf

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

NEWS

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ PHP NEWS
3939

4040
- PHPDBG:
4141
. Fixed bug GH-15901 (phpdbg: Assertion failure on i funcs). (cmb)
42+
. Fixed bug GH-16181 (phpdbg: exit in exception handler reports fatal error).
43+
(cmb)
4244

4345
- SimpleXML:
4446
. Fixed bug GH-15837 (Segmentation fault in ext/simplexml/simplexml.c).

sapi/phpdbg/phpdbg_prompt.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ PHPDBG_COMMAND(run) /* {{{ */
907907
}
908908
} zend_end_try();
909909

910-
if (EG(exception)) {
910+
if (EG(exception) && !zend_is_unwind_exit(EG(exception))) {
911911
phpdbg_handle_exception();
912912
}
913913
}

sapi/phpdbg/tests/gh16181.phpt

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
--TEST--
2+
GH-16181 (phpdbg: exit in exception handler reports fatal error)
3+
--PHPDBG--
4+
r
5+
c
6+
q
7+
--FILE--
8+
<?php
9+
set_exception_handler(function() {
10+
echo "exception caught\n";
11+
die;
12+
});
13+
14+
echo "throwing exception\n";
15+
throw new \Exception("oh noes");
16+
?>
17+
--EXPECTF--
18+
[Successful compilation of %s]
19+
prompt> throwing exception
20+
[Uncaught Exception in %s on line %d: oh noes]
21+
>00008: throw new \Exception("oh noes");
22+
00009: ?>
23+
00010:
24+
prompt> exception caught
25+
[Script ended normally]
26+
prompt>

0 commit comments

Comments
 (0)