From bdd1a3fa274078dd37da6df64bb93b3b183fa7cb Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 13 Dec 2013 07:49:21 -0800 Subject: * signal.c (set_sig_handler): Clear the deferred flag for a signal that is being set to ignored or default. * txr.1: Documented signals. --- signal.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'signal.c') diff --git a/signal.c b/signal.c index f680bf4d..c833131b 100644 --- a/signal.c +++ b/signal.c @@ -137,10 +137,14 @@ val set_sig_handler(val signo, val lambda) old_lambda = sig_lambda[sig]; if (lambda != old_lambda) { + unsigned long mask = 1UL << sig; + if (lambda == nil) { signal(sig, SIG_IGN); + sig_deferred &= ~mask; } else if (lambda == t) { signal(sig, SIG_DFL); + sig_deferred &= ~mask; } else { struct sigaction sa = { 0 }; -- cgit v1.2.3