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>
|
||||
|
||||
* globals.cc (ro_u_prlfs): Add trailing NUL. Explain why.
|
||||
|
|
|
@ -402,11 +402,16 @@ sig_clear (int sig)
|
|||
void
|
||||
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)
|
||||
{
|
||||
qnext->si.si_signo = 0;
|
||||
q->next = qnext->next;
|
||||
}
|
||||
else
|
||||
q = qnext;
|
||||
}
|
||||
|
||||
/* Clear pending signals of specific thread. Called from _cygtls::remove */
|
||||
|
|
Loading…
Reference in New Issue