Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 48887:c562c8dae49a
Issue 3611: in some cases (a __del__ re-raising an exception, when called from inside
an 'except' clause), the exception __context__ would be reset to None.
This crases the interpreter if this precisely happens inside PyErr_SetObject.
- now the __context__ is properly preserved
- in any case, PyErr_SetObject now saves the current exc_value in a local variable, to
avoid such crashes in the future.
Reviewer: Antoine Pitrou.
| author | Amaury Forgeot d'Arc <amauryfa@gmail.com> |
|---|---|
| date | Fri, 29 Aug 2008 07:13:32 +0000 |
| parents | 013d4d8407cb |
| children | 22ab106e3186 |
line wrap: on
line diff
--- a/Python/ceval.c Thu Aug 28 14:55:10 2008 +0000 +++ b/Python/ceval.c Fri Aug 29 07:13:32 2008 +0000 @@ -2453,11 +2453,6 @@ if (b->b_type == EXCEPT_HANDLER) { UNWIND_EXCEPT_HANDLER(b); - if (why == WHY_EXCEPTION && !throwflag) { - Py_CLEAR(tstate->exc_type); - Py_CLEAR(tstate->exc_value); - Py_CLEAR(tstate->exc_traceback); - } continue; } UNWIND_BLOCK(b);
