Index: src/port/open.c
===================================================================
RCS file: /cvsroot/pgsql/src/port/open.c,v
retrieving revision 1.15
diff -c -c -r1.15 open.c
*** src/port/open.c	24 Sep 2006 17:19:53 -0000	1.15
--- src/port/open.c	3 Oct 2006 01:16:43 -0000
***************
*** 105,113 ****
  	}
  
  	/* _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)))
  		CloseHandle(h);			/* will not affect errno */
  	return fd;
  }
  
--- 105,119 ----
  	}
  
  	/* _open_osfhandle will, on error, set errno accordingly */
! 	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)				/* will not affect errno */
+ 		return -1;
+ 	}
+ 
  	return fd;
  }
  
