[CRT]
authorAmine Khaldi <amine.khaldi@reactos.org>
Mon, 13 Oct 2014 18:08:34 +0000 (18:08 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Mon, 13 Oct 2014 18:08:34 +0000 (18:08 +0000)
* Update free_fd().
* Fixes some msvcrt:file tests.
CORE-8540

svn path=/trunk/; revision=64733

reactos/lib/sdk/crt/stdio/file.c

index 1b673bc..6327cf6 100644 (file)
@@ -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();
 }