From: Kirk McKusick Date: Tue, 19 Apr 1994 14:00:46 +0000 (-0800) Subject: in sendsig, pass ps_code when signum agrees with ps_sig (from Karels and Hibler) X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/commitdiff_plain/9aeb3b871485562bbc680d4d119e3eeef4458ee4 in sendsig, pass ps_code when signum agrees with ps_sig (from Karels and Hibler) SCCS-vsn: sys/kern/kern_sig.c 8.7 --- diff --git a/usr/src/sys/kern/kern_sig.c b/usr/src/sys/kern/kern_sig.c index 6868ab58d6..4e399b3119 100644 --- a/usr/src/sys/kern/kern_sig.c +++ b/usr/src/sys/kern/kern_sig.c @@ -9,7 +9,7 @@ * * %sccs.include.redist.c% * - * @(#)kern_sig.c 8.6 (Berkeley) %G% + * @(#)kern_sig.c 8.7 (Berkeley) %G% */ #define SIGPROP /* include signal properties table */ @@ -998,7 +998,7 @@ postsig(signum) register struct proc *p = curproc; register struct sigacts *ps = p->p_sigacts; register sig_t action; - int mask, returnmask; + int code, mask, returnmask; #ifdef DIAGNOSTIC if (signum == 0) @@ -1046,7 +1046,13 @@ postsig(signum) p->p_sigmask |= ps->ps_catchmask[signum] | mask; (void) spl0(); p->p_stats->p_ru.ru_nsignals++; - sendsig(action, signum, returnmask, 0); + if (ps->ps_sig != signum) { + code = 0; + } else { + code = ps->ps_code; + ps->ps_code = 0; + } + sendsig(action, signum, returnmask, code); } }