Module: wine Branch: master Commit: afc6962a24a68e9ef105edd8733a1ea772af1a01 URL: http://source.winehq.org/git/wine.git/?a=commit;h=afc6962a24a68e9ef105edd873...
Author: Piotr Caban piotr@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; }