mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
If close() fails in file_dealloc, then print an error message to
stderr. close() can fail if the user is out-of-quota, for example. Fixes #959379.
This commit is contained in:
parent
4f802ac2b6
commit
f8e74b12b0
1 changed files with 8 additions and 1 deletions
|
@ -300,12 +300,19 @@ static void drop_readahead(PyFileObject *);
|
|||
static void
|
||||
file_dealloc(PyFileObject *f)
|
||||
{
|
||||
int sts = 0;
|
||||
if (f->weakreflist != NULL)
|
||||
PyObject_ClearWeakRefs((PyObject *) f);
|
||||
if (f->f_fp != NULL && f->f_close != NULL) {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
(*f->f_close)(f->f_fp);
|
||||
sts = (*f->f_close)(f->f_fp);
|
||||
Py_END_ALLOW_THREADS
|
||||
if (sts == EOF)
|
||||
#ifdef HAVE_STRERROR
|
||||
PySys_WriteStderr("close failed: [Errno %d] %s\n", errno, strerror(errno));
|
||||
#else
|
||||
PySys_WriteStderr("close failed: [Errno %d]\n", errno);
|
||||
#endif
|
||||
}
|
||||
PyMem_Free(f->f_setbuf);
|
||||
Py_XDECREF(f->f_name);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue