[net.bugs.4bsd] 4.?bsd C compiler mishandles uses of functions of type void

ado@elsie.UUCP (Arthur David Olson) (02/23/85)

Index:		lib/mip/trees.c Fix

Description:
	The C compiler can't compile some statements that take the address of
	a function of type void.

Repeat-By:
	echo "extern void subr(); void (* ptr)() = subr;" > try.c
	cc -c try.c

	An error message is produced and "try.o" is not created.

Fix:
	Most of the fix is to ensure that when the "-p" option is used with
	"lint" it will produce appropriate warnings.
	The file is named "/usr/src/cmd/mip/trees.c" in 4.1bsd.
	The trade secret status of the code precludes a clearer posting.

 ed lib/mip/trees.c
 /^moditype/;/case TVOID/a
 #ifndef OLDVERSION
 		return MPTR;
 #endif
 .
 /^opact/;/case GE/a
 #ifndef OLDVERSION
 		if (pflag && (mt1 == MPTR || mt2 == MPTR))
 werror("pre-'85 BSD compilers can't take address of function of type void");
 #endif
 .
 /^opact/;/case COLON/a
 #ifndef OLDVERSION
 		if (pflag && (mt1 == MPTR || mt2 == MPTR))
 werror("pre-'85 BSD compilers can't take address of function of type void");
 #endif
 .
 /^opact/;/case CAST/a
 #ifndef OLDVERSION
 		if (pflag && (mt1 == MPTR || mt2 == MPTR))
 werror("pre-'85 BSD compilers can't take address of function of type void");
 #endif
 .
 w
 q
--
	UUCP: ..decvax!seismo!elsie!ado    ARPA: elsie!ado@seismo.ARPA
	DEC, VAX and Elsie are Digital Equipment and Borden trademarks