From: Thomas Wouters Date: Mon, 24 Sep 2001 19:32:01 +0000 (+0000) Subject: Don't swap the arguments to PyFrame_BlockSetup when recreating the recently X-Git-Tag: v2.2.1c1~1650 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1ee642211112c637e2b125dcc04b24f64984d749;p=python 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. --- diff --git a/Python/ceval.c b/Python/ceval.c index 3ca1e3e283..5a8f503eb7 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -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);