]> granicus.if.org Git - postgresql/commitdiff
Cleanup pgwin32_open() 'if' test, and avoid possible error.
authorBruce Momjian <bruce@momjian.us>
Tue, 3 Oct 2006 20:44:18 +0000 (20:44 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 3 Oct 2006 20:44:18 +0000 (20:44 +0000)
src/port/open.c

index dd1901bd3d8ae96b45aaf323474dc661e167b332..125cad0550357c48c0f25dce84dd9c2eb02fa084 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/port/open.c,v 1.15 2006/09/24 17:19:53 tgl Exp $
+ * $PostgreSQL: pgsql/src/port/open.c,v 1.16 2006/10/03 20:44:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -105,9 +105,15 @@ pgwin32_open(const char *fileName, int fileFlags,...)
        }
 
        /* _open_osfhandle will, on error, set errno accordingly */
-       if ((fd = _open_osfhandle((long) h, fileFlags & O_APPEND)) < 0 ||
-               (fileFlags & (O_TEXT | O_BINARY) && (_setmode(fd, fileFlags & (O_TEXT | O_BINARY)) < 0)))
+       if ((fd = _open_osfhandle((long) h, fileFlags & O_APPEND)) < 0)
                CloseHandle(h);                 /* will not affect errno */
+       else if (fileFlags & (O_TEXT | O_BINARY) &&
+               _setmode(fd, fileFlags & (O_TEXT | O_BINARY)) < 0)
+       {
+               _close(fd);
+               return -1;
+       }
+
        return fd;
 }