chris@mimsy.UUCP (Chris Torek) (04/08/88)
Index: usr.bin/lint/Makefile 4.3BSD Fix Description: Some time ago, someone noted in comp.lang.c that 4BSD lint apparently believes that any two structures are compatible as long as their sizes are the same. Lint was coded to believe that structures are compatible when their names *and* sizes are the same, but due to a small goof, gets this wrong. (I fixed this some time ago for an unrelated problem that does not occur in 4.3BSD as distributed, but only recently noticed that it fixes this bug too, hence the late posting.) Repeat-by: Run lint on the following file: struct foo { char *p; }; struct bar { int *p; }; f(x) struct foo *x; { x=x; } main() { f((struct bar *)0); } It should complain, but does not. Fix: hash.c has code that is conditioned on #ifdef FLEXNAMES, but does not include config.h and thinks FLEXNAMES is not defined. RCS file: RCS/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -c2 -r1.1 -r1.2 *** /tmp/,RCSt1022038 Thu Apr 7 17:16:57 1988 --- /tmp/,RCSt2022038 Thu Apr 7 17:16:58 1988 *************** *** 93,97 **** lpass2.o: $M/manifest.h lmanifest.h pcclocal.h macdefs.h ${CC} ${CFLAGS} -c -I$M -I. lpass2.c ! lintall: lint -hpv -I. -I$M $M/cgram.c $M/xdefs.c $M/scan.c \ --- 93,100 ---- lpass2.o: $M/manifest.h lmanifest.h pcclocal.h macdefs.h ${CC} ${CFLAGS} -c -I$M -I. lpass2.c ! ! hash.o: hash.c ! ${CC} ${CFLAGS} -c -I$M -I. hash.c ! lintall: lint -hpv -I. -I$M $M/cgram.c $M/xdefs.c $M/scan.c \ RCS file: RCS/hash.c,v retrieving revision 1.1 diff -c2 -r1.1 hash.c *** /tmp/,RCSt1022220 Thu Apr 7 17:30:53 1988 --- hash.c Sat Apr 2 02:44:36 1988 *************** *** 1,5 **** #ifndef lint ! static char sccsid[] = "@(#)hash.c 1.1 (Berkeley) 3/29/83"; #endif lint /* --- 1,7 ---- #ifndef lint ! static char sccsid[] = "@(#)hash.c 1.2 (Berkeley) 9/28/87"; #endif lint + + #include "config.h" /* -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 7163) Domain: chris@mimsy.umd.edu Path: uunet!mimsy!chris