From 1cb247fa391f60f35a33a9da50fa4dbad665696b Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 29 Aug 1990 11:44:33 +0000 Subject: [PATCH] only deal with signals that are not ignored --- lang/m2/libm2/sigtrp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lang/m2/libm2/sigtrp.c b/lang/m2/libm2/sigtrp.c index 59a600667..c01612555 100644 --- a/lang/m2/libm2/sigtrp.c +++ b/lang/m2/libm2/sigtrp.c @@ -50,6 +50,7 @@ sigtrp(trapno, signo) */ extern int errno; int (*ctch)() = __ctchsig; + int (*oldctch)(); int oldtrap; if (signo <= 0 || signo >= sizeof(__traps)/sizeof(__traps[0])) { @@ -70,10 +71,13 @@ sigtrp(trapno, signo) oldtrap = __traps[signo]; - if (signal(signo, ctch) == (int (*)())-1) /* errno set by signal */ + if ((oldctch = signal(signo, ctch)) == (int (*)())-1) /* errno set by signal */ return -1; - __traps[signo] = trapno; + else if (oldctch == SIG_IGN) { + signal(signo, SIG_IGN); + } + else __traps[signo] = trapno; return oldtrap; } -- 2.34.1