[gnu.g++.bug] fatal signal on sparc

schmidt%blanche.ics.uci.edu@ORION.CF.UCI.EDU ("Douglas C. Schmidt") (10/24/88)

Hi,

  The following program gets a fatal signal when compiled on the Sun 4
running g++ 1.27.  Furthermore, it also complains about struct state
not having a method named `next.'  Since this works fine under gcc on 
the Sun 3 I suppose there is a subtle distinction between structs in
C++ and C on this point.  Can someone please explain why?

thanks,

   Doug

----------------------------------------
#include <stdio.h>

struct  state {
	struct state (*next)(struct state);
};

int i = 0;

struct state foo(struct state Current)
{
   if (i < 5) {
      i++;
   }
   else {
      Current.next = NULL;
   }      
   return(Current);
}

state_machine(struct state initstate)
{
	struct state state = initstate;

	while (state.next)
		state = state.next(state);
}

main()
{
   struct state state = { foo };
   
   printf("i == %d\n",i);
   state_machine(state);
   printf("i == %d\n",i);
}
----------------------------------------
g++ version 1.27.0
 echo use .cc filename extension!
use .cc filename extension!
 /usr/public/lib/g++/gcc-cpp+ -v -I/cd/ua/schmidt/include/ -undef -D__GNU__ -D__GNUG__ -Dsparc -Dsun -Dunix -+ state.c /tmp/cca18377.cpp
GNU CPP version 1.27.0
 /usr/public/lib/g++/gcc-c++ /tmp/cca18377.cpp -quiet -dumpbase state.c -fchar-charconst -version -o /tmp/cca18377.s

state.c:25: structure has no method named `next'
GNU C++ version 1.27.0 (sparc) compiled by GNU C version 1.28.
/usr/public/g++: Program c++ got fatal signal 6.