From: Amine Khaldi Date: Mon, 13 Oct 2014 18:08:34 +0000 (+0000) Subject: [CRT] X-Git-Tag: backups/0.3.17@66124~31 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=6d6e0cda0c5d4cbf40716e94201d1cdeb3cc2f76 [CRT] * Update free_fd(). * Fixes some msvcrt:file tests. CORE-8540 svn path=/trunk/; revision=64733 --- 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(); }