summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_io/bufferedio.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 358a94d..ea9f533 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -2413,12 +2413,18 @@ bufferedrwpair_writable(rwpair *self, PyObject *args)
static PyObject *
bufferedrwpair_close(rwpair *self, PyObject *args)
{
+ PyObject *exc = NULL, *val, *tb;
PyObject *ret = _forward_call(self->writer, &PyId_close, args);
if (ret == NULL)
- return NULL;
- Py_DECREF(ret);
-
- return _forward_call(self->reader, &PyId_close, args);
+ PyErr_Fetch(&exc, &val, &tb);
+ else
+ Py_DECREF(ret);
+ ret = _forward_call(self->reader, &PyId_close, args);
+ if (exc != NULL) {
+ _PyErr_ChainExceptions(exc, val, tb);
+ Py_CLEAR(ret);
+ }
+ return ret;
}
static PyObject *