]> granicus.if.org Git - python/commitdiff
(Merge 3.4) Issue #25182: Fix compilation on Windows
authorVictor Stinner <victor.stinner@gmail.com>
Wed, 30 Sep 2015 13:03:31 +0000 (15:03 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Wed, 30 Sep 2015 13:03:31 +0000 (15:03 +0200)
1  2 
Objects/fileobject.c

index a836cb38155d76755d736bd86009236b481acbf2,1a93a6dd6b2f3d7de01b7a7229df7dd4e05f4956..234d07e5c6754d4df2646c13f21875e4f5a67bd1
@@@ -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 (_errno == EAGAIN) {
 +    if (n == -1) {
++        if (err == EAGAIN) {
 +            PyErr_Clear();
              Py_RETURN_NONE;
 -        errno = err;
 -        PyErr_SetFromErrno(PyExc_IOError);
 +        }
          return NULL;
      }