summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/signal.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/signal.cc')
-rw-r--r--winsup/cygwin/signal.cc10
1 files changed, 8 insertions, 2 deletions
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