Skip to content

Commit 10bdc08

Browse files
committed
Merge branch 'PHP-8.5'
* PHP-8.5: Fix GH-22280: Ignore non-finally try blocks (#22286)
2 parents 3642a7a + 2ec5f2d commit 10bdc08

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

Zend/tests/try/gh22280.phpt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
--TEST--
2+
GH-22280: goto to label before try/finally after try/catch
3+
--FILE--
4+
<?php
5+
goto d;
6+
try {
7+
} catch (Throwable) {
8+
}
9+
d: try {
10+
echo "try\n";
11+
} finally {
12+
echo "finally\n";
13+
}
14+
echo "done\n";
15+
?>
16+
--EXPECT--
17+
try
18+
finally
19+
done

Zend/zend_opcode.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,10 @@ static void zend_extension_op_array_handler(zend_extension *extension, zend_op_a
698698
static void zend_check_finally_breakout(zend_op_array *op_array, uint32_t op_num, uint32_t dst_num)
699699
{
700700
for (uint32_t i = 0; i < op_array->last_try_catch; i++) {
701+
if (!op_array->try_catch_array[i].finally_op) {
702+
continue;
703+
}
704+
701705
if ((op_num < op_array->try_catch_array[i].finally_op ||
702706
op_num >= op_array->try_catch_array[i].finally_end)
703707
&& (dst_num >= op_array->try_catch_array[i].finally_op &&

0 commit comments

Comments
 (0)