summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/signal.cc
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2011-07-10 00:01:33 +0000
committerEric Blake <eblake@redhat.com>2011-07-10 00:01:33 +0000
commit14295a59d3e9b6a20d4cef1aeaa19f31f84ec30b (patch)
tree1da3c842339c3039a55dc9ce2f558a2b69e93592 /winsup/cygwin/signal.cc
parentf6835aecb3090461498ee588152a86ec816b61ec (diff)
downloadcygnal-14295a59d3e9b6a20d4cef1aeaa19f31f84ec30b.tar.gz
cygnal-14295a59d3e9b6a20d4cef1aeaa19f31f84ec30b.tar.bz2
cygnal-14295a59d3e9b6a20d4cef1aeaa19f31f84ec30b.zip
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/cygwin/signal.cc')
-rw-r--r--winsup/cygwin/signal.cc10
1 files changed, 6 insertions, 4 deletions
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;