mirror of https://github.com/python/cpython.git
Don't swap the arguments to PyFrame_BlockSetup when recreating the recently
popped frame-block. What an embarrassing bug! Especially for Jeremy, since he accepted the patch :-) This fixes SF bugs #463359 and #462937, and possibly other, *very* obscure bugs with very deeply nested loops that continue the loop and then break out of it or raise an exception.
This commit is contained in:
parent
3d45d8f12e
commit
1ee6422111
|
@ -2217,8 +2217,8 @@ eval_frame(PyFrameObject *f)
|
|||
if (b->b_type == SETUP_LOOP && why == WHY_CONTINUE) {
|
||||
/* For a continue inside a try block,
|
||||
don't pop the block for the loop. */
|
||||
PyFrame_BlockSetup(f, b->b_type, b->b_level,
|
||||
b->b_handler);
|
||||
PyFrame_BlockSetup(f, b->b_type, b->b_handler,
|
||||
b->b_level);
|
||||
why = WHY_NOT;
|
||||
JUMPTO(PyInt_AS_LONG(retval));
|
||||
Py_DECREF(retval);
|
||||
|
|
Loading…
Reference in New Issue