Fix iterating over pending signals if a signal doesn't have to be cleared
* sigproc.cc (pending_signals::clear): Yet another fix to fix the fix. Actually iterate over the list of pending signals even if there's a signal which doesn't have to be cleared. Other than that, revert loop to it's former self as a while loop. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
57d93bebb2
commit
eeef727026
|
@ -1,3 +1,10 @@
|
||||||
|
2015-11-05 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* sigproc.cc (pending_signals::clear): Yet another fix to fix the fix.
|
||||||
|
Actually iterate over the list of pending signals even if there's a
|
||||||
|
signal which doesn't have to be cleared. Other than that, revert loop
|
||||||
|
to it's former self as a while loop.
|
||||||
|
|
||||||
2015-11-04 Corinna Vinschen <corinna@vinschen.de>
|
2015-11-04 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* globals.cc (ro_u_prlfs): Add trailing NUL. Explain why.
|
* globals.cc (ro_u_prlfs): Add trailing NUL. Explain why.
|
||||||
|
|
|
@ -402,11 +402,16 @@ sig_clear (int sig)
|
||||||
void
|
void
|
||||||
pending_signals::clear (_cygtls *tls)
|
pending_signals::clear (_cygtls *tls)
|
||||||
{
|
{
|
||||||
sigpacket *q, *qnext;
|
sigpacket *q = &start, *qnext;
|
||||||
|
|
||||||
for (q = &start; (qnext = q->next); q->next = qnext->next)
|
while ((qnext = q->next))
|
||||||
if (qnext->sigtls == tls)
|
if (qnext->sigtls == tls)
|
||||||
|
{
|
||||||
qnext->si.si_signo = 0;
|
qnext->si.si_signo = 0;
|
||||||
|
q->next = qnext->next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
q = qnext;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clear pending signals of specific thread. Called from _cygtls::remove */
|
/* Clear pending signals of specific thread. Called from _cygtls::remove */
|
||||||
|
|
Loading…
Reference in New Issue