Module: wine Branch: master Commit: db92137f83671204f4a9f188a6a432f98ef6648b URL: http://source.winehq.org/git/wine.git/?a=commit;h=db92137f83671204f4a9f188a6...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Mar 1 15:04:21 2013 +0100
msvcrt: Reuse standard file descriptors after closing them.
---
dlls/msvcrt/file.c | 23 ++++++++++------------- 1 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index c730bd7..5b3bf5e 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -251,40 +251,37 @@ static HANDLE msvcrt_fdtoh(int fd) /* INTERNAL: free a file entry fd */ static void msvcrt_free_fd(int fd) { - HANDLE old_handle; ioinfo *fdinfo;
LOCK_FILES(); fdinfo = msvcrt_get_ioinfo(fd); - old_handle = fdinfo->handle; if(fdinfo != &MSVCRT___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 == MSVCRT_fdend - 1) - MSVCRT_fdend--; - if (fd < MSVCRT_fdstart) - MSVCRT_fdstart = fd; - } + + if (fd == MSVCRT_fdend - 1) + MSVCRT_fdend--; + if (fd < MSVCRT_fdstart) + MSVCRT_fdstart = fd; UNLOCK_FILES(); }