Commit d3f03fa7 authored by Georg Brandl's avatar Georg Brandl

PyErr_NormalizeException may not set an error, so convert the PyErr_SetObject

call on hitting the recursion limit into just assigning it to the arguments provided.
parent dd98e04c
......@@ -12,6 +12,9 @@ What's New in Python 2.7 alpha 1
Core and Builtins
-----------------
- Fix a problem in PyErr_NormalizeException that leads to "undetected errors"
when hitting the recursion limit under certain circumstances.
- Issue #1665206: Remove the last eager import in _warnings.c and make it lazy.
- Issue #4865: On MacOSX /Library/Python/2.7/site-packages is added to
......
......@@ -225,7 +225,15 @@ finally:
tstate = PyThreadState_GET();
if (++tstate->recursion_depth > Py_GetRecursionLimit()) {
--tstate->recursion_depth;
PyErr_SetObject(PyExc_RuntimeError, PyExc_RecursionErrorInst);
/* throw away the old exception... */
Py_DECREF(*exc);
Py_DECREF(*val);
/* ... and use the recursion error instead */
*exc = PyExc_RuntimeError;
*val = PyExc_RecursionErrorInst;
Py_INCREF(*exc);
Py_INCREF(*val);
/* just keeping the old traceback */
return;
}
PyErr_NormalizeException(exc, val, tb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment