From 8d109cb0436e76448b2a413833bc867d490f6cca Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Thu, 8 May 2008 04:26:35 +0000 Subject: Antoine Pitrou's patch for bug 2507; exception state lives too long in 3.0. --- Python/ceval.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'Python/ceval.c') diff --git a/Python/ceval.c b/Python/ceval.c index bac8278126..defd00299f 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1477,6 +1477,19 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) "'finally' pops bad exception"); why = WHY_EXCEPTION; } + /* + Make sure the exception state is cleaned up before + the end of an except block. This ensures objects + referenced by the exception state are not kept + alive too long. + See #2507. + */ + if (tstate->frame->f_exc_type != NULL) + reset_exc_info(tstate); + else { + assert(tstate->frame->f_exc_value == NULL); + assert(tstate->frame->f_exc_traceback == NULL); + } Py_DECREF(v); break; -- cgit v1.2.1