mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Issue #7865: The close() method of :mod:io
objects should not swallow
exceptions raised by the implicit flush(). Also ensure that calling close() several times is supported. Patch by Pascal Chambon.
This commit is contained in:
parent
c3ce9e357d
commit
f7fd8e4c94
7 changed files with 81 additions and 32 deletions
|
@ -183,11 +183,7 @@ iobase_close(PyObject *self, PyObject *args)
|
|||
res = PyObject_CallMethodObjArgs(self, _PyIO_str_flush, NULL);
|
||||
PyObject_SetAttrString(self, "__IOBase_closed", Py_True);
|
||||
if (res == NULL) {
|
||||
/* If flush() fails, just give up */
|
||||
if (PyErr_ExceptionMatches(PyExc_IOError))
|
||||
PyErr_Clear();
|
||||
else
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
Py_XDECREF(res);
|
||||
Py_RETURN_NONE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue