summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-08-23 12:04:27 -0700
committerGitHub <noreply@github.com>2019-08-23 12:04:27 -0700
commit3921d12174c1998d9df7a08d036a7fef2d587a64 (patch)
treeccdc7bffaec66fea405e85d791af95d9cab57e1d /Python
parent761e5a7c7f57cf2a09106c0afa038f04de6a9ed2 (diff)
downloadcpython-git-3921d12174c1998d9df7a08d036a7fef2d587a64.tar.gz
bpo-37549: os.dup() fails for standard streams on Windows 7 (GH-15389)
(cherry picked from commit 5be666010e4df65dc4d831435cc92340ea369f94) Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Diffstat (limited to 'Python')
-rw-r--r--Python/fileutils.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Python/fileutils.c b/Python/fileutils.c
index 30ddd037e6..e79e732d1f 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -1134,11 +1134,18 @@ set_inheritable(int fd, int inheritable, int raise, int *atomic_flag_works)
flags = HANDLE_FLAG_INHERIT;
else
flags = 0;
- if (!SetHandleInformation(handle, HANDLE_FLAG_INHERIT, flags)) {
+
+ /* This check can be removed once support for Windows 7 ends. */
+#define CONSOLE_PSEUDOHANDLE(handle) (((ULONG_PTR)(handle) & 0x3) == 0x3 && \
+ GetFileType(handle) == FILE_TYPE_CHAR)
+
+ if (!CONSOLE_PSEUDOHANDLE(handle) &&
+ !SetHandleInformation(handle, HANDLE_FLAG_INHERIT, flags)) {
if (raise)
PyErr_SetFromWindowsErr(0);
return -1;
}
+#undef CONSOLE_PSEUDOHANDLE
return 0;
#else