Kaydet (Commit) f8e74b12 authored tarafından Peter Astrand's avatar Peter Astrand

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.
üst 4f802ac2
......@@ -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);
......
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