summaryrefslogtreecommitdiffstats
path: root/Objects/fileobject.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-12-17 15:32:20 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-12-17 15:32:20 (GMT)
commit78ad6583d602625320f345b152b0f4f7233e483c (patch)
tree27b7e410f2b5af02ee09ec01daf8386fa8835132 /Objects/fileobject.c
parent15df36bb14e35489d841898069e3878f2144e48e (diff)
downloadcpython-78ad6583d602625320f345b152b0f4f7233e483c.zip
cpython-78ad6583d602625320f345b152b0f4f7233e483c.tar.gz
cpython-78ad6583d602625320f345b152b0f4f7233e483c.tar.bz2
Circumventing a bug in glibc (issue #17976).
Patch by Jaakko Moisio.
Diffstat (limited to 'Objects/fileobject.c')
-rw-r--r--Objects/fileobject.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index d3b1cf6..c5e0961 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -1804,7 +1804,7 @@ file_write(PyFileObject *f, PyObject *args)
const char *s;
Py_ssize_t n, n2;
PyObject *encoded = NULL;
- int err = 0;
+ int err_flag = 0, err;
if (f->f_fp == NULL)
return err_closed();
@@ -1850,13 +1850,15 @@ file_write(PyFileObject *f, PyObject *args)
FILE_BEGIN_ALLOW_THREADS(f)
errno = 0;
n2 = fwrite(s, 1, n, f->f_fp);
- if (n2 != n || ferror(f->f_fp))
+ if (n2 != n || ferror(f->f_fp)) {
+ err_flag = 1;
err = errno;
+ }
FILE_END_ALLOW_THREADS(f)
Py_XDECREF(encoded);
if (f->f_binary)
PyBuffer_Release(&pbuf);
- if (err) {
+ if (err_flag) {
errno = err;
PyErr_SetFromErrno(PyExc_IOError);
clearerr(f->f_fp);