TRACE(":fd (%d) handle (%p)\n", fd, info->handle);
if (!(info->wxflag & WX_OPEN)) {
ret = -1;
+ } else if (fd == STDOUT_FILENO &&
+ info->handle == get_ioinfo_nolock(STDERR_FILENO)->handle) {
+ msvcrt_free_fd(fd);
+ ret = 0;
+ } else if (fd == STDERR_FILENO &&
+ info->handle == get_ioinfo_nolock(STDOUT_FILENO)->handle) {
+ msvcrt_free_fd(fd);
+ ret = 0;
} else {
ret = CloseHandle(info->handle) ? 0 : -1;
msvcrt_free_fd(fd);
(mode==_LK_NBRLCK)?"_LK_NBRLCK":
"UNKNOWN");
- if ((cur_locn = SetFilePointer(info->handle, 0L, NULL, SEEK_CUR)) == INVALID_SET_FILE_POINTER)
+ if ((cur_locn = SetFilePointer(info->handle, 0L, NULL, FILE_CURRENT)) == INVALID_SET_FILE_POINTER)
{
release_ioinfo(info);
FIXME ("Seek failed\n");
return -1;
}
+ if(info == &__badioinfo) {
+ *_errno() = EBADF;
+ return EOF;
+ }
+
if(mode == _O_BINARY) {
info->wxflag &= ~WX_TEXT;
info->exflag &= ~(EF_UTF8|EF_UTF16);