Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2014-08-19 23:25:54 +0400
committerCorinna Vinschen <corinna@vinschen.de>2014-08-19 23:25:54 +0400
commit905a851912b3f01baa8c797fa6e84081c84b2390 (patch)
tree33b50e1500e86f68fbdb689199af5ff498765206 /winsup
parent59c3d5a1a4c0d8ee4f1da2c9e449ed9ab4edd4b6 (diff)
* 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.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/dir.cc7
-rw-r--r--winsup/cygwin/signal.cc2
3 files changed, 13 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 0c0aa654a..d50ef733d 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 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);