summaryrefslogtreecommitdiff
path: root/Modules
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2014-06-11 07:18:53 +0300
committerSerhiy Storchaka <storchaka@gmail.com>2014-06-11 07:18:53 +0300
commitd4495807d49087b4e3a5774ce210976a4123cebe (patch)
tree745ae50aa7957c3fa37ce0d2755c0c63a9bc9387 /Modules
parent4a361de0a42c5ad9c0a01bbf2719cf10da3e0c8a (diff)
downloadcpython-d4495807d49087b4e3a5774ce210976a4123cebe.tar.gz
PyErr_NormalizeException doesn't like being called with an exception set
(issues #21677, #21310).
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_io/_iomodule.c8
-rw-r--r--Modules/_io/bufferedio.c8
-rw-r--r--Modules/_io/textio.c8
3 files changed, 12 insertions, 12 deletions
diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c
index 1dbd563e2c..660ff1fe58 100644
--- a/Modules/_io/_iomodule.c
+++ b/Modules/_io/_iomodule.c
@@ -470,14 +470,14 @@ io_open(PyObject *self, PyObject *args, PyObject *kwds)
if (_PyObject_CallMethodId(result, &PyId_close, NULL) != NULL)
PyErr_Restore(exc, val, tb);
else {
- PyObject *val2;
+ PyObject *exc2, *val2, *tb2;
+ PyErr_Fetch(&exc2, &val2, &tb2);
PyErr_NormalizeException(&exc, &val, &tb);
Py_XDECREF(exc);
Py_XDECREF(tb);
- PyErr_Fetch(&exc, &val2, &tb);
- PyErr_NormalizeException(&exc, &val2, &tb);
+ PyErr_NormalizeException(&exc2, &val2, &tb2);
PyException_SetContext(val2, val);
- PyErr_Restore(exc, val2, tb);
+ PyErr_Restore(exc2, val2, tb2);
}
Py_DECREF(result);
}
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index d0e92e5f7f..4c0262e25a 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -548,14 +548,14 @@ buffered_close(buffered *self, PyObject *args)
PyErr_Restore(exc, val, tb);
}
else {
- PyObject *val2;
+ PyObject *exc2, *val2, *tb2;
+ PyErr_Fetch(&exc2, &val2, &tb2);
PyErr_NormalizeException(&exc, &val, &tb);
Py_DECREF(exc);
Py_XDECREF(tb);
- PyErr_Fetch(&exc, &val2, &tb);
- PyErr_NormalizeException(&exc, &val2, &tb);
+ PyErr_NormalizeException(&exc2, &val2, &tb2);
PyException_SetContext(val2, val);
- PyErr_Restore(exc, val2, tb);
+ PyErr_Restore(exc2, val2, tb2);
}
}
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index 55392b435f..635093efff 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -2613,14 +2613,14 @@ textiowrapper_close(textio *self, PyObject *args)
PyErr_Restore(exc, val, tb);
}
else {
- PyObject *val2;
+ PyObject *exc2, *val2, *tb2;
+ PyErr_Fetch(&exc2, &val2, &tb2);
PyErr_NormalizeException(&exc, &val, &tb);
Py_DECREF(exc);
Py_XDECREF(tb);
- PyErr_Fetch(&exc, &val2, &tb);
- PyErr_NormalizeException(&exc, &val2, &tb);
+ PyErr_NormalizeException(&exc2, &val2, &tb2);
PyException_SetContext(val2, val);
- PyErr_Restore(exc, val2, tb);
+ PyErr_Restore(exc2, val2, tb2);
}
}
return res;