Piotr Caban : msvcrt: Use fd critical section in _close.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Nov 11 11:04:46 CST 2014


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Nov 11 15:58:18 2014 +0100

msvcrt: Use fd critical section in _close.

---

 dlls/msvcrt/file.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 60dbd92..b0f8735 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -988,24 +988,23 @@ int CDECL MSVCRT__fflush_nolock(MSVCRT_FILE* file)
  */
 int CDECL MSVCRT__close(int fd)
 {
-  HANDLE hand;
+  ioinfo *info = get_ioinfo(fd);
   int ret;
 
   LOCK_FILES();
-  hand = msvcrt_fdtoh(fd);
-  TRACE(":fd (%d) handle (%p)\n",fd,hand);
-  if (!msvcrt_is_valid_fd(fd)) {
+  TRACE(":fd (%d) handle (%p)\n", fd, info->handle);
+  if (!(info->wxflag & WX_OPEN)) {
     ret = -1;
   } else {
+    ret = CloseHandle(info->handle) ? 0 : -1;
     msvcrt_free_fd(fd);
-    ret = CloseHandle(hand) ? 0 : -1;
     if (ret) {
       WARN(":failed-last error (%d)\n",GetLastError());
       msvcrt_set_errno(GetLastError());
     }
   }
   UNLOCK_FILES();
-  TRACE(":ok\n");
+  release_ioinfo(info);
   return ret;
 }
 




More information about the wine-cvs mailing list