mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
[CRT]
* Update free_fd(). * Fixes some msvcrt:file tests. CORE-8540 svn path=/trunk/; revision=64733
This commit is contained in:
parent
2598a46b01
commit
6d6e0cda0c
1 changed files with 10 additions and 13 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue