Re: [PATCH] mingw: follow-up to "replace isatty() hack"
From: Johannes Sixt <hidden>
Date: 2017-01-18 21:16:44
Am 18.01.2017 um 20:19 schrieb Junio C Hamano:
Johannes Schindelin [off-list ref] writes:quoted
compat/winansi.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)diff --git a/compat/winansi.c b/compat/winansi.c index 3c9ed3cfe0..82b89ab137 100644 --- a/compat/winansi.c +++ b/compat/winansi.c@@ -494,19 +494,16 @@ static HANDLE swap_osfhnd(int fd, HANDLE new_handle) * 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).
Looks good and obviously correct (FLW). I can offer a Reviewed-by: Johannes Sixt <redacted> but it will take a day or two until I can test the patch. -- Hannes