From: Victor Stinner Date: Wed, 30 Sep 2015 13:03:31 +0000 (+0200) Subject: (Merge 3.4) Issue #25182: Fix compilation on Windows X-Git-Tag: v3.5.1rc1~237 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ae86da9b204b0fe2510309bd9fae688e7c9a35fb;p=python (Merge 3.4) Issue #25182: Fix compilation on Windows --- ae86da9b204b0fe2510309bd9fae688e7c9a35fb diff --cc Objects/fileobject.c index a836cb3815,1a93a6dd6b..234d07e5c6 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@@ -402,14 -402,26 +402,17 @@@ stdprinter_write(PyStdPrinter_Object *s } } - Py_BEGIN_ALLOW_THREADS - errno = 0; -#ifdef MS_WINDOWS - if (n > INT_MAX) - n = INT_MAX; - n = write(self->fd, str, (int)n); -#else - n = write(self->fd, str, n); -#endif + n = _Py_write(self->fd, str, n); - _errno = errno; + /* save errno, it can be modified indirectly by Py_XDECREF() */ + err = errno; - Py_END_ALLOW_THREADS + Py_XDECREF(bytes); + - if (n < 0) { - if (err == EAGAIN) + if (n == -1) { - if (_errno == EAGAIN) { ++ if (err == EAGAIN) { + PyErr_Clear(); Py_RETURN_NONE; - errno = err; - PyErr_SetFromErrno(PyExc_IOError); + } return NULL; }