summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/cygwait.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/cygwait.cc')
-rw-r--r--winsup/cygwin/cygwait.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/winsup/cygwin/cygwait.cc b/winsup/cygwin/cygwait.cc
index 4d2b8a745..71d30d164 100644
--- a/winsup/cygwin/cygwait.cc
+++ b/winsup/cygwin/cygwait.cc
@@ -18,8 +18,10 @@
#define is_cw_sig (mask & cw_sig)
#define is_cw_sig_eintr (mask & cw_sig_eintr)
#define is_cw_sig_cont (mask & cw_sig_cont)
+#define is_cw_sig_restart (mask & cw_sig_restart)
-#define is_cw_sig_handle (mask & (cw_sig | cw_sig_eintr | cw_sig_cont))
+#define is_cw_sig_handle (mask & (cw_sig | cw_sig_eintr \
+ | cw_sig_cont | cw_sig_restart))
LARGE_INTEGER cw_nowait_storage;
@@ -88,7 +90,7 @@ cygwait (HANDLE object, PLARGE_INTEGER timeout, unsigned mask)
continue;
if (is_cw_sig_eintr || (is_cw_sig_cont && sig == SIGCONT))
;
- else if (_my_tls.call_signal_handler ())
+ else if (_my_tls.call_signal_handler () || is_cw_sig_restart)
continue;
res = WAIT_SIGNALED; /* caller will deal with signals */
}