Module: wine Branch: master Commit: c867f3324ec6fd1330c8b3228bc5db79f0b4833c URL: http://source.winehq.org/git/wine.git/?a=commit;h=c867f3324ec6fd1330c8b3228b...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Oct 6 20:13:38 2011 +0200
msvcrt: Free fd entries with incorrect HANDLE value.
---
dlls/msvcrt/file.c | 17 +++++++---------- 1 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index ecbec34..90e0d80 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -797,18 +797,15 @@ int CDECL MSVCRT__close(int fd) LOCK_FILES(); hand = msvcrt_fdtoh(fd); TRACE(":fd (%d) handle (%p)\n",fd,hand); - if (hand == INVALID_HANDLE_VALUE) - ret = -1; - else if (!CloseHandle(hand)) - { - WARN(":failed-last error (%d)\n",GetLastError()); - msvcrt_set_errno(GetLastError()); + if (!msvcrt_is_valid_fd(fd)) { ret = -1; - } - else - { + } else { msvcrt_free_fd(fd); - ret = 0; + ret = CloseHandle(hand) ? 0 : -1; + if (ret) { + WARN(":failed-last error (%d)\n",GetLastError()); + msvcrt_set_errno(GetLastError()); + } } UNLOCK_FILES(); TRACE(":ok\n");