Commit acbda9dd authored by Stefan Behnel's avatar Stefan Behnel

proposed fix to prevent exception chaining in Py3

parent e24f88f8
...@@ -4868,14 +4868,19 @@ static void __Pyx_ReRaise(void); /*proto*/ ...@@ -4868,14 +4868,19 @@ static void __Pyx_ReRaise(void); /*proto*/
""", """,
impl = """ impl = """
static void __Pyx_ReRaise(void) { static void __Pyx_ReRaise(void) {
PyThreadState *tstate = PyThreadState_Get(); PyThreadState *tstate = PyThreadState_GET();
PyObject *type = tstate->exc_type; PyObject* tmp_type = tstate->curexc_type;
PyObject *value = tstate->exc_value; PyObject* tmp_value = tstate->curexc_value;
PyObject *tb = tstate->exc_traceback; PyObject* tmp_tb = tstate->curexc_traceback;
Py_XINCREF(type); tstate->curexc_type = tstate->exc_type;
Py_XINCREF(value); tstate->curexc_value = tstate->exc_value;
Py_XINCREF(tb); tstate->curexc_traceback = tstate->exc_traceback;
__Pyx_ErrRestore(type, value, tb); tstate->exc_type = 0;
tstate->exc_value = 0;
tstate->exc_traceback = 0;
Py_XDECREF(tmp_type);
Py_XDECREF(tmp_value);
Py_XDECREF(tmp_tb);
} }
""") """)
...@@ -5271,6 +5276,16 @@ static INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *t ...@@ -5271,6 +5276,16 @@ 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;
tmp_value = tstate->exc_value;
tmp_tb = tstate->exc_traceback;
tstate->exc_type = 0;
tstate->exc_value = 0;
tstate->exc_traceback = 0;
Py_XDECREF(tmp_type);
Py_XDECREF(tmp_value);
Py_XDECREF(tmp_tb);
tmp_type = tstate->curexc_type; tmp_type = tstate->curexc_type;
tmp_value = tstate->curexc_value; tmp_value = tstate->curexc_value;
tmp_tb = tstate->curexc_traceback; tmp_tb = tstate->curexc_traceback;
......
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