* exceptions.cc (sigdelayed): Move declaration to sigproc.h.
* sigproc.h (sigdelayed): Make symbol globally available. * gendef (sigdelayed): Specifically zero incyg and stacklock. * signal.cc (sigwaitinfo): Lock _my_tls and try harder to clean up signal information.
This commit is contained in:
@@ -590,10 +590,14 @@ sigwaitinfo (const sigset_t *set, siginfo_t *info)
|
||||
}
|
||||
else
|
||||
{
|
||||
_my_tls.lock ();
|
||||
if (info)
|
||||
*info = _my_tls.infodata;
|
||||
res = _my_tls.infodata.si_signo;
|
||||
InterlockedExchange ((LONG *) &_my_tls.sig, (LONG) 0);
|
||||
_my_tls.sig = 0;
|
||||
if (_my_tls.retaddr () == (__stack_t) sigdelayed)
|
||||
_my_tls.pop ();
|
||||
_my_tls.unlock ();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
Reference in New Issue
Block a user