From: Junio C Hamano Date: Tue, 31 Jan 2017 21:32:11 +0000 (-0800) Subject: Merge branch 'js/mingw-isatty' into maint X-Git-Tag: v2.11.1~5 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/6a7e25d155adb2c8a44173ec80fac7b0385a55a7?hp=-c Merge branch 'js/mingw-isatty' into maint An update to a topic that is already in 'master'. * js/mingw-isatty: mingw: follow-up to "replace isatty() hack" --- 6a7e25d155adb2c8a44173ec80fac7b0385a55a7 diff --combined compat/winansi.c index 3c9ed3cfe0,56658ec4f8..82b89ab137 --- a/compat/winansi.c +++ b/compat/winansi.c @@@ -494,19 -494,16 +494,16 @@@ static HANDLE swap_osfhnd(int fd, HANDL * It is because of this implicit close() that we created the * copy of the original. * - * Note that the OS can recycle HANDLE (numbers) just like it - * recycles fd (numbers), so we must update the cached value - * of "console". You can use GetFileType() to see that - * handle and _get_osfhandle(fd) may have the same number - * value, but they refer to different actual files now. + * Note that we need to update the cached console handle to the + * duplicated one because the dup2() call will implicitly close + * the original one. * * Note that dup2() when given target := {0,1,2} will also * call SetStdHandle(), so we don't need to worry about that. */ - dup2(new_fd, fd); if (console == handle) console = duplicate; - handle = INVALID_HANDLE_VALUE; + dup2(new_fd, fd); /* Close the temp fd. This explicitly closes "new_handle" * (because it has been associated with it). @@@ -540,7 -537,7 +537,7 @@@ static void detect_msys_tty(int fd buffer, sizeof(buffer) - 2, &result))) return; name = nameinfo->Name.Buffer; - name[nameinfo->Name.Length] = 0; + name[nameinfo->Name.Length / sizeof(*name)] = 0; /* * Check if this could be a MSYS2 pty pipe ('msys-XXXX-ptyN-XX')