* 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:
Christopher Faylor
2012-08-15 16:35:00 +00:00
parent 0123506d2d
commit d57a4725b1
5 changed files with 18 additions and 5 deletions

View File

@@ -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: