sms@wlv.imsd.contel.com (Steven M. Schultz) (09/11/89)
Subject: signal(3) misdeclares mask array
Index: lib/libc/gen/signal.c 2.10BSD
Description:
The signal(3) routine has a long vs. int bug. signal masks
are 32 bits long rather than 16.
Repeat-By:
Examination.
The thing which drew attention to this bug was that the generated
code showed a "sxt" being generated rather than a true double
word move.
Fix:
Apply the following patch to /usr/src/lib/libc/gen/signal.c, recompile
using the guidlines in the Makefile and insert in to the c libraries.
Or, recompile the entire C library, but that seems a bit severe.
*** signal.c.old Sun Mar 9 19:56:54 1986
--- signal.c Sun Sep 10 20:51:09 1989
***************
*** 18,24 ****
int s, (*a)();
{
struct sigvec osv, sv;
! static int mask[NSIG];
static int flags[NSIG];
sv.sv_handler = a;
--- 18,24 ----
int s, (*a)();
{
struct sigvec osv, sv;
! static long mask[NSIG];
static int flags[NSIG];
sv.sv_handler = a;