diff options
Diffstat (limited to 'winsup/cygwin/exceptions.cc')
-rw-r--r-- | winsup/cygwin/exceptions.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 71766575b..5e20d9b56 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1,7 +1,7 @@ /* exceptions.cc Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009, 2010 Red Hat, Inc. + 2005, 2006, 2007, 2008, 2009, 2010, 2011 Red Hat, Inc. This file is part of Cygwin. @@ -712,12 +712,6 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in, void int __stdcall handle_sigsuspend (sigset_t tempmask) { - if (&_my_tls != _main_tls) - { - cancelable_wait (signal_arrived, INFINITE, cw_cancel_self); - return -1; - } - sigset_t oldmask = _my_tls.sigmask; // Remember for restoration set_signal_mask (tempmask, _my_tls.sigmask); @@ -1174,6 +1168,19 @@ sigpacket::process () sig_clear (SIGTTOU); } + switch (si.si_signo) + { + case SIGINT: + case SIGQUIT: + case SIGSTOP: + case SIGTSTP: + if (cygheap->ctty) + cygheap->ctty->sigflush (); + break; + default: + break; + } + int rc = 1; sigproc_printf ("signal %d processing", si.si_signo); |