msvcrt: Free fd entries with incorrect HANDLE value.
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 @@ LOCK_FILES(); hand = msvcrt_fdtoh(fd); TRACE(":fd (%d) handle (%p)\n",fd,hand); - if (hand == INVALID_HANDLE_VALUE) + if (!msvcrt_is_valid_fd(fd)) { ret = -1; - else if (!CloseHandle(hand)) - { - WARN(":failed-last error (%d)\n",GetLastError()); - msvcrt_set_errno(GetLastError()); - 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");