aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/sigproc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r--winsup/cygwin/sigproc.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index aeb51f2..862093c 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -516,6 +516,12 @@ sig_dispatch_pending (int justwake)
{
if (!hwait_sig)
return 0;
+ DWORD tid = GetCurrentThreadId ();
+
+ sigframe thisframe (mainthread);
+
+ if (tid == sigtid && !justwake)
+ justwake = 1;
int was_pending = pending_signals;
#ifdef DEBUGGING
@@ -544,6 +550,9 @@ sig_dispatch_pending (int justwake)
system_printf ("%E releasing sigcatch_nosync(%p)", sigcatch_nosync);
}
+ if (was_pending && !justwake)
+ thisframe.call_signal_handler ();
+
return was_pending;
}