From 8f97c045b8e65784071fd097fc32a1f16b855b3b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 30 Oct 2015 16:05:43 +0100 Subject: Fix sigwait and pthread_kill return values in case of error * signal.cc (sigwait): Fix return value to reflect errno in case of error according to POSIX. Never return EINTR. * thread.cc (pthread_kill): Return errno if sig_send failed. Signed-off-by: Corinna Vinschen --- winsup/cygwin/signal.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'winsup/cygwin/signal.cc') diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 4897417d4..8dfd4ab63 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -557,10 +557,16 @@ siginterrupt (int sig, int flag) extern "C" int sigwait (const sigset_t *set, int *sig_ptr) { - int sig = sigwaitinfo (set, NULL); + int sig; + + do + { + sig = sigwaitinfo (set, NULL); + } + while (sig == -1 && get_errno () == EINTR); if (sig > 0) *sig_ptr = sig; - return sig > 0 ? 0 : -1; + return sig > 0 ? 0 : get_errno (); } extern "C" int -- cgit v1.2.3