summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/syscalls.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r--winsup/cygwin/syscalls.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index b549f9530..0be393a46 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -384,6 +384,9 @@ _write (int fd, const void *ptr, size_t len)
myself->process_state |= PID_TTYOU;
res = cfd->write (ptr, len);
myself->process_state &= ~PID_TTYOU;
+ if (res && get_errno () == EACCES &&
+ !(cfd->get_flags () & (O_WRONLY | O_RDWR)))
+ set_errno (EBADF);
}
done: