File tree Expand file tree Collapse file tree 3 files changed +26
-1
lines changed
Misc/NEWS.d/next/Core_and_Builtins Expand file tree Collapse file tree 3 files changed +26
-1
lines changed Original file line number Diff line number Diff line change @@ -1972,6 +1972,27 @@ def testfunc(n):
19721972 assert ex is not None
19731973 """ ))
19741974
1975+ def test_next_instr_for_exception_handler_set (self ):
1976+ # gh-140104: We just want the exception to be caught properly.
1977+ def f ():
1978+ for i in range (TIER2_THRESHOLD + 3 ):
1979+ try :
1980+ undefined_variable (i )
1981+ except Exception :
1982+ pass
1983+
1984+ f ()
1985+
1986+ def test_next_instr_for_exception_handler_set_lasts_instr (self ):
1987+ # gh-140104: We just want the exception to be caught properly.
1988+ def f ():
1989+ a_list = []
1990+ for _ in range (TIER2_THRESHOLD + 3 ):
1991+ try :
1992+ a_list ["" ] = 0
1993+ except Exception :
1994+ pass
1995+
19751996
19761997def global_identity (x ):
19771998 return x
Original file line number Diff line number Diff line change 1+ Fix a bug with exception handling in the JIT. Patch by Ken Jin. Bug reported
2+ by Daniel Diniz.
Original file line number Diff line number Diff line change @@ -368,7 +368,9 @@ do { \
368368 frame = tstate -> current_frame ; \
369369 stack_pointer = _PyFrame_GetStackPointer (frame ); \
370370 if (next_instr == NULL ) { \
371- next_instr = frame -> instr_ptr ; \
371+ /* gh-140104: The exception handler expects frame->instr_ptr
372+ to after this_instr, not this_instr! */ \
373+ next_instr = frame -> instr_ptr + 1 ; \
372374 JUMP_TO_LABEL (error ); \
373375 } \
374376 DISPATCH (); \
You can’t perform that action at this time.
0 commit comments