Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: Notesfiles $Revision: 1.6.2.14 $; site umn-cs.UUCP
Path: utzoo!watmath!clyde!cbosgd!ihnp4!stolaf!umn-cs!herndon
From: herndon@umn-cs.UUCP
Newsgroups: net.lang.c
Subject: 4.2 C bugs?
Message-ID: <1700001@umn-cs.UUCP>
Date: Sat, 2-Mar-85 15:54:00 EST
Article-I.D.: umn-cs.1700001
Posted: Sat Mar  2 15:54:00 1985
Date-Received: Mon, 4-Mar-85 08:30:01 EST
Lines: 35
Nf-ID: #N:umn-cs:1700001:000:900
Nf-From: umn-cs!herndon    Mar  2 14:54:00 1985


  Does anyone know of a solution for the following problems?

   1)  The C compiler (4.2bsd) barfs on the following:
	void foo() {...}

	void blort() {...}

	void (*f[]) () = {
		foo,			/* Operands of = have incompat. types*/
		blort,			/* Ditto. */
		0
	}

     though it accepts:
        int foo() {...}

	int blort() {...}

	int (*f[])() = {
		foo,
		blort,
		0
	};
    This doesn't seem rational to me.  If I declare foo and blort
  in the first example to be integer, then it only gives me warnings.

   2) When I try to pass a union as an argument to a function
  (again, 4.2bsd), the C compiler usually works.  Unfortunately,
  it often doesn't work.  It frequently dies with no error
  message at all, or else a mysterious message to the effect
  of "Op STASHG missing from op-code table".  The unions in
  question all fit into one word.

  Are these really bugs, or am I missing something?