Skip to content

Commit

Permalink
pythongh-120225: fix crash in compiler on empty block at end of excep…
Browse files Browse the repository at this point in the history
…tion handler
  • Loading branch information
iritkatriel committed Jun 7, 2024
1 parent 225aab7 commit e2de0b6
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
10 changes: 10 additions & 0 deletions Lib/test/test_compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -1409,6 +1409,16 @@ def f():
for kw in ("except", "except*"):
exec(code % kw, g, l);

def test_regression_gh_120225(self):
async def name_4():
match b'':
case True:
pass
case name_5 if f'e':
{name_3: name_4 async for name_2 in name_5}
case []:
pass
[[]]

@requires_debug_ranges()
class TestSourcePositions(unittest.TestCase):
Expand Down
7 changes: 1 addition & 6 deletions Python/flowgraph.c
Original file line number Diff line number Diff line change
Expand Up @@ -2304,13 +2304,8 @@ push_cold_blocks_to_end(cfg_builder *g) {
if (!IS_LABEL(b->b_next->b_label)) {
b->b_next->b_label.id = next_lbl++;
}
cfg_instr *prev_instr = basicblock_last_instr(b);
// b cannot be empty because at the end of an exception handler
// there is always a POP_EXCEPT + RERAISE/RETURN
assert(prev_instr);

basicblock_addop(explicit_jump, JUMP_NO_INTERRUPT, b->b_next->b_label.id,
prev_instr->i_loc);
NO_LOCATION);
explicit_jump->b_cold = 1;
explicit_jump->b_next = b->b_next;
b->b_next = explicit_jump;
Expand Down

0 comments on commit e2de0b6

Please sign in to comment.