From afc6962a24a68e9ef105edd8733a1ea772af1a01 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 11 Nov 2014 15:58:18 +0100 Subject: [PATCH] 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 60dbd92f400..b0f8735d207 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; }