Piotr Caban : msvcrt: Don' t close HANDLE if stdout or stderr is sharing it.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 22 08:57:37 CST 2016


Module: wine
Branch: master
Commit: 781b069ed813927d00fb53e84731186eb58d9d3a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=781b069ed813927d00fb53e84731186eb58d9d3a

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Feb 19 18:43:20 2016 +0100

msvcrt: Don't close HANDLE if stdout or stderr is sharing it.

Based on Qian Hong patch.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/file.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 9f35a62..fc9f1ae 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -1021,6 +1021,14 @@ int CDECL MSVCRT__close(int fd)
   TRACE(":fd (%d) handle (%p)\n", fd, info->handle);
   if (!(info->wxflag & WX_OPEN)) {
     ret = -1;
+  } else if (fd == MSVCRT_STDOUT_FILENO &&
+          info->handle == get_ioinfo_nolock(MSVCRT_STDERR_FILENO)->handle) {
+    msvcrt_free_fd(fd);
+    ret = 0;
+  } else if (fd == MSVCRT_STDERR_FILENO &&
+          info->handle == get_ioinfo_nolock(MSVCRT_STDOUT_FILENO)->handle) {
+    msvcrt_free_fd(fd);
+    ret = 0;
   } else {
     ret = CloseHandle(info->handle) ? 0 : -1;
     msvcrt_free_fd(fd);




More information about the wine-cvs mailing list