diff options
Diffstat (limited to 'winsup/cygwin/sigproc.cc')
-rw-r--r-- | winsup/cygwin/sigproc.cc | 9 |
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; } |