From 4611530c455e66de32bb28e3588924efc88608ce Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 14 Jun 2000 15:14:49 +0000 Subject: 11901: two more trap saving bugs --- Src/signals.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Src/signals.c') diff --git a/Src/signals.c b/Src/signals.c index 543d4ab9b..7ec517b7f 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -671,8 +671,11 @@ dosavetrap(int sig, int level) newshf->funcdef = dupeprog(shf->funcdef, 0); } st->list = newshf; - } else { + } else if (sigtrapped[sig]) { st->list = sigfuncs[sig] ? dupeprog(sigfuncs[sig], 0) : NULL; + } else { + DPUTS(sigfuncs[sig], "BUG: sigfuncs not null for untrapped signal"); + st->list = NULL; } if (!savetraps) savetraps = znewlinklist(); @@ -789,6 +792,7 @@ removetrap(int sig) * As in dosavetrap(), don't call removeshfuncnode() because * that calls back into unsettrap(); */ + sigfuncs[sig] = NULL; return removehashnode(shfunctab, func); } else if (sigfuncs[sig]) { freeeprog(sigfuncs[sig]); -- cgit 1.4.1