diff options
author | Steve Dower <steve.dower@microsoft.com> | 2015-03-08 02:14:07 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2015-03-08 02:14:07 (GMT) |
commit | 8acde7dccebd914ec4235f3ed1e9eef53a300978 (patch) | |
tree | 3af6da4a9ba7c3da9f4c1e8bb3fbcfc2c4bd08b6 /Python/fileutils.c | |
parent | 35a97c0bed8af6cab7ea0fffe374c3369561c444 (diff) | |
download | cpython-8acde7dccebd914ec4235f3ed1e9eef53a300978.zip cpython-8acde7dccebd914ec4235f3ed1e9eef53a300978.tar.gz cpython-8acde7dccebd914ec4235f3ed1e9eef53a300978.tar.bz2 |
Issue #23524: Change back to using Windows errors for _Py_fstat instead of the errno shim.
Diffstat (limited to 'Python/fileutils.c')
-rw-r--r-- | Python/fileutils.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Python/fileutils.c b/Python/fileutils.c index c0dbc86..6502823 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -637,10 +637,14 @@ _Py_fstat(int fd, struct _Py_stat_struct *result) else h = (HANDLE)_get_osfhandle(fd); + /* Protocol violation: we explicitly clear errno, instead of + setting it to a POSIX error. Callers should use GetLastError. */ errno = 0; if (h == INVALID_HANDLE_VALUE) { - errno = EBADF; + /* This is really a C library error (invalid file handle). + We set the Win32 error to the closes one matching. */ + SetLastError(ERROR_INVALID_HANDLE); return -1; } memset(result, 0, sizeof(*result)); @@ -649,7 +653,6 @@ _Py_fstat(int fd, struct _Py_stat_struct *result) if (type == FILE_TYPE_UNKNOWN) { DWORD error = GetLastError(); if (error != 0) { - errno = EINVAL; return -1; } /* else: valid but unknown file */ @@ -664,7 +667,6 @@ _Py_fstat(int fd, struct _Py_stat_struct *result) } if (!GetFileInformationByHandle(h, &info)) { - errno = EINVAL; return -1; } |