diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 0c0aa654a..d50ef733d 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2014-08-19 Corinna Vinschen + + * dir.cc (dirfd): Per POSIX, return EINVAL on invalid directory stream. + (telldir): Per POSIX, return -1 and set errno to EBADF, rather than + just returning 0, on invalid directory stream. + * signal.cc (sigwaitinfo): Return -1, not EFAULT, when SEGV was catched. + 2014-08-19 Corinna Vinschen * fhandler.h (enum conn_state): Add "connect_credxchg" state. diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index 01b9ab882..b1035ba49 100644 --- a/winsup/cygwin/dir.cc +++ b/winsup/cygwin/dir.cc @@ -33,7 +33,7 @@ dirfd (DIR *dir) return -1; if (dir->__d_cookie != __DIRENT_COOKIE) { - set_errno (EBADF); + set_errno (EINVAL); syscall_printf ("-1 = dirfd (%p)", dir); return -1; } @@ -205,7 +205,10 @@ telldir (DIR *dir) return -1; if (dir->__d_cookie != __DIRENT_COOKIE) - return 0; + { + set_errno (EBADF); + return -1; + } return ((fhandler_base *) dir->__fh)->telldir (dir); } diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index dc01337c2..3ea8af502 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -564,7 +564,7 @@ sigwaitinfo (const sigset_t *set, siginfo_t *info) myfault efault; if (efault.faulted (EFAULT)) - return EFAULT; + return -1; set_signal_mask (_my_tls.sigwait_mask, *set); sig_dispatch_pending (true);