* exceptions.cc (sigpacket::process): Explicitly set thread-specific handler

function to zero to avoid transferring to incorrect location.
(_cygtls::call_signal_handler): Don't transfer to handler if there is no
handler to transfer to.
This commit is contained in:
Christopher Faylor 2009-09-19 15:34:19 +00:00
parent 4945cb2af0
commit 50a8741474
2 changed files with 9 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2009-09-19 Christopher Faylor <me+cygwin@cgf.cx>
* exceptions.cc (sigpacket::process): Explicitly set thread-specific
handler function to zero to avoid transferring to incorrect location.
(_cygtls::call_signal_handler): Don't transfer to handler if there is
no handler to transfer to.
2009-09-18 Christopher Faylor <me+cygwin@cgf.cx>
* exceptions.cc (sigpacket::process): Give sigwait() processing

View File

@ -1298,6 +1298,7 @@ done:
thread_specific:
use_tls->sig = si.si_signo;
use_tls->set_siginfo (this);
use_tls->func = NULL;
sigproc_printf ("releasing sigwait for thread");
SetEvent (use_tls->event);
goto done;
@ -1374,7 +1375,7 @@ _cygtls::call_signal_handler ()
{
int this_sa_flags = 0;
/* Call signal handler. */
while (sig)
while (sig && func)
{
lock ();
this_sa_flags = sa_flags;