diff options
Diffstat (limited to 'Python/errors.c')
| -rw-r--r-- | Python/errors.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/Python/errors.c b/Python/errors.c index 02e9572..e0ff90f 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -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);  | 
