Commit d485d418 authored by Stefan Behnel's avatar Stefan Behnel

work-around to fix ticket #228 at least work in Py2.x, while still preventing crashes in Py3

parent a9358680
...@@ -5425,15 +5425,22 @@ static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *t ...@@ -5425,15 +5425,22 @@ static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *t
PyObject *tmp_type, *tmp_value, *tmp_tb; PyObject *tmp_type, *tmp_value, *tmp_tb;
PyThreadState *tstate = PyThreadState_GET(); PyThreadState *tstate = PyThreadState_GET();
tmp_type = tstate->exc_type; #if PY_MAJOR_VERSION >= 3
tmp_value = tstate->exc_value; /* Note: this is a temporary work-around to prevent crashes in Python 3.0 */
tmp_tb = tstate->exc_traceback; if ((tstate->exc_type != NULL) & (tstate->exc_type != Py_None)) {
tstate->exc_type = 0; tmp_type = tstate->exc_type;
tstate->exc_value = 0; tmp_value = tstate->exc_value;
tstate->exc_traceback = 0; tmp_tb = tstate->exc_traceback;
Py_XDECREF(tmp_type); PyErr_NormalizeException(&type, &value, &tb);
Py_XDECREF(tmp_value); PyErr_NormalizeException(&tmp_type, &tmp_value, &tmp_tb);
Py_XDECREF(tmp_tb); tstate->exc_type = 0;
tstate->exc_value = 0;
tstate->exc_traceback = 0;
PyException_SetContext(value, tmp_value);
Py_DECREF(tmp_type);
Py_XDECREF(tmp_tb);
}
#endif
tmp_type = tstate->curexc_type; tmp_type = tstate->curexc_type;
tmp_value = tstate->curexc_value; tmp_value = tstate->curexc_value;
......
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