]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StdLib/LibC/Stdio/freopen.c
StdLib/LibC/StdLib/Malloc.c: Revert cast removal to fix GCC build breakage.
[mirror_edk2.git] / StdLib / LibC / Stdio / freopen.c
index 4d34497317bc062efa57056021d60a872edc9404..58381e6d19d9938cccdb152bcc3f78d103734694 100644 (file)
 #include  <assert.h>\r
 #include  <errno.h>\r
 #include  <fcntl.h>\r
-#include  <sys/EfiSysCall.h>\r
 #include  <stdio.h>\r
 #include  <stdlib.h>\r
 #include  <wchar.h>\r
+#include  <unistd.h>\r
 #include  "reentrant.h"\r
 #include  "local.h"\r
 \r
@@ -104,7 +104,7 @@ freopen(const char *file, const char *mode, FILE *fp)
       (void) __sflush(fp);\r
     /* if close is NULL, closing is a no-op, hence pointless */\r
     isopen = fp->_close != NULL;\r
-    if ((wantfd = fp->_file) < 0 && isopen) {\r
+    if (((wantfd = fp->_file) >= 0) && isopen) {\r
       (void) (*fp->_close)(fp->_cookie);\r
       isopen = 0;\r
     }\r
@@ -127,7 +127,7 @@ freopen(const char *file, const char *mode, FILE *fp)
    * keep fp->_base: it may be the wrong size.  This loses the effect\r
    * of any setbuffer calls, but stdio has always done this before.\r
    */\r
-  if (isopen && f != wantfd)\r
+  if (isopen && (f != wantfd))\r
     (void) (*fp->_close)(fp->_cookie);\r
   if (fp->_flags & __SMBF)\r
     free((char *)fp->_bf._base);\r