diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-17 15:32:20 (GMT) |
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-12-17 15:32:20 (GMT) |
| commit | 78ad6583d602625320f345b152b0f4f7233e483c (patch) | |
| tree | 27b7e410f2b5af02ee09ec01daf8386fa8835132 /Objects/fileobject.c | |
| parent | 15df36bb14e35489d841898069e3878f2144e48e (diff) | |
| download | cpython-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.c | 8 |
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); |
