From 6d6e0cda0c5d4cbf40716e94201d1cdeb3cc2f76 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Mon, 13 Oct 2014 18:08:34 +0000 Subject: [PATCH] [CRT] * Update free_fd(). * Fixes some msvcrt:file tests. CORE-8540 svn path=/trunk/; revision=64733 --- reactos/lib/sdk/crt/stdio/file.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/reactos/lib/sdk/crt/stdio/file.c b/reactos/lib/sdk/crt/stdio/file.c index 1b673bc6230..6327cf6a805 100644 --- a/reactos/lib/sdk/crt/stdio/file.c +++ b/reactos/lib/sdk/crt/stdio/file.c @@ -233,40 +233,37 @@ static inline BOOL is_valid_fd(int fd) /* INTERNAL: free a file entry fd */ static void free_fd(int fd) { - HANDLE old_handle; ioinfo *fdinfo; LOCK_FILES(); fdinfo = get_ioinfo(fd); - old_handle = fdinfo->handle; if(fdinfo != &__badioinfo) { fdinfo->handle = INVALID_HANDLE_VALUE; fdinfo->wxflag = 0; } TRACE(":fd (%d) freed\n",fd); - if (fd < 3) /* don't use 0,1,2 for user files */ + + if (fd < 3) { switch (fd) { case 0: - if (GetStdHandle(STD_INPUT_HANDLE) == old_handle) SetStdHandle(STD_INPUT_HANDLE, 0); + SetStdHandle(STD_INPUT_HANDLE, 0); break; case 1: - if (GetStdHandle(STD_OUTPUT_HANDLE) == old_handle) SetStdHandle(STD_OUTPUT_HANDLE, 0); + SetStdHandle(STD_OUTPUT_HANDLE, 0); break; case 2: - if (GetStdHandle(STD_ERROR_HANDLE) == old_handle) SetStdHandle(STD_ERROR_HANDLE, 0); + SetStdHandle(STD_ERROR_HANDLE, 0); break; } } - else - { - if (fd == fdend - 1) - fdend--; - if (fd < fdstart) - fdstart = fd; - } + + if (fd == fdend - 1) + fdend--; + if (fd < fdstart) + fdstart = fd; UNLOCK_FILES(); }