diff options
Diffstat (limited to 'winsup/cygwin/signal.cc')
-rw-r--r-- | winsup/cygwin/signal.cc | 10 |
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 |