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:
authorEric Blake <eblake@redhat.com>2011-07-10 04:01:33 +0400
committerEric Blake <eblake@redhat.com>2011-07-10 04:01:33 +0400
commit14295a59d3e9b6a20d4cef1aeaa19f31f84ec30b (patch)
tree1da3c842339c3039a55dc9ce2f558a2b69e93592 /winsup
parentf6835aecb3090461498ee588152a86ec816b61ec (diff)
pthread_sigmask: fix return value to match POSIX
* signal.cc (handle_sigprocmask): Return error rather than setting errno, for pthread_sigmask. (sigprocmask): Adjust caller.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/signal.cc10
2 files changed, 12 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index da03f8b25..76a6022d0 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-09 Eric Blake <eblake@redhat.com>
+
+ * signal.cc (handle_sigprocmask): Return error rather than setting
+ errno, for pthread_sigmask.
+ (sigprocmask): Adjust caller.
+
2011-07-07 Corinna Vinschen <corinna@vinschen.de>
* miscfuncs.cc (yield): Drop thread priority only once.
diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc
index 9c920d037..4c472fda3 100644
--- a/winsup/cygwin/signal.cc
+++ b/winsup/cygwin/signal.cc
@@ -174,7 +174,10 @@ usleep (useconds_t useconds)
extern "C" int
sigprocmask (int how, const sigset_t *set, sigset_t *oldset)
{
- return handle_sigprocmask (how, set, oldset, _my_tls.sigmask);
+ int res = handle_sigprocmask (how, set, oldset, _my_tls.sigmask);
+ if (res)
+ set_errno (res);
+ return res ? -1 : 0;
}
int __stdcall
@@ -184,13 +187,12 @@ handle_sigprocmask (int how, const sigset_t *set, sigset_t *oldset, sigset_t& op
if (how != SIG_BLOCK && how != SIG_UNBLOCK && how != SIG_SETMASK)
{
syscall_printf ("Invalid how value %d", how);
- set_errno (EINVAL);
- return -1;
+ return EINVAL;
}
myfault efault;
if (efault.faulted (EFAULT))
- return -1;
+ return EFAULT;
if (oldset)
*oldset = opmask;