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;