diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2014-08-19 19:25:54 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2014-08-19 19:25:54 +0000 |
commit | 905a851912b3f01baa8c797fa6e84081c84b2390 (patch) | |
tree | 33b50e1500e86f68fbdb689199af5ff498765206 | |
parent | 59c3d5a1a4c0d8ee4f1da2c9e449ed9ab4edd4b6 (diff) | |
download | newlib-905a851912b3f01baa8c797fa6e84081c84b2390.zip newlib-905a851912b3f01baa8c797fa6e84081c84b2390.tar.gz newlib-905a851912b3f01baa8c797fa6e84081c84b2390.tar.bz2 |
* 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.
-rw-r--r-- | winsup/cygwin/ChangeLog | 7 | ||||
-rw-r--r-- | winsup/cygwin/dir.cc | 7 | ||||
-rw-r--r-- | winsup/cygwin/signal.cc | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 0c0aa65..d50ef73 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,12 @@ 2014-08-19 Corinna Vinschen <corinna@vinschen.de> + * 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 <corinna@vinschen.de> + * fhandler.h (enum conn_state): Add "connect_credxchg" state. (class fhandler_socket): Grant another bit to connect_state flag. * fhandler_socket.cc (fhandler_socket::af_local_connect): Rearrange diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index 01b9ab8..b1035ba 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 dc01337..3ea8af5 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); |