* 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:
parent
4945cb2af0
commit
50a8741474
@ -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>
|
2009-09-18 Christopher Faylor <me+cygwin@cgf.cx>
|
||||||
|
|
||||||
* exceptions.cc (sigpacket::process): Give sigwait() processing
|
* exceptions.cc (sigpacket::process): Give sigwait() processing
|
||||||
|
@ -1298,6 +1298,7 @@ done:
|
|||||||
thread_specific:
|
thread_specific:
|
||||||
use_tls->sig = si.si_signo;
|
use_tls->sig = si.si_signo;
|
||||||
use_tls->set_siginfo (this);
|
use_tls->set_siginfo (this);
|
||||||
|
use_tls->func = NULL;
|
||||||
sigproc_printf ("releasing sigwait for thread");
|
sigproc_printf ("releasing sigwait for thread");
|
||||||
SetEvent (use_tls->event);
|
SetEvent (use_tls->event);
|
||||||
goto done;
|
goto done;
|
||||||
@ -1374,7 +1375,7 @@ _cygtls::call_signal_handler ()
|
|||||||
{
|
{
|
||||||
int this_sa_flags = 0;
|
int this_sa_flags = 0;
|
||||||
/* Call signal handler. */
|
/* Call signal handler. */
|
||||||
while (sig)
|
while (sig && func)
|
||||||
{
|
{
|
||||||
lock ();
|
lock ();
|
||||||
this_sa_flags = sa_flags;
|
this_sa_flags = sa_flags;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user