Path: utzoo!telly!ddsw1!lll-winken!killer!mit-eddie!bloom-beacon!tut.cis.ohio-state.edu!PARIS.ICS.UCI.EDU!schmidt%crimee.ics.uci.edu From: schmidt%crimee.ics.uci.edu@PARIS.ICS.UCI.EDU ("Douglas C. Schmidt") Newsgroups: gnu.g++.bug Subject: fix for g++ segmentation fault Message-ID: <8901190257.aa27187@PARIS.ICS.UCI.EDU> Date: 19 Jan 89 10:49:22 GMT Sender: daemon@tut.cis.ohio-state.edu Distribution: gnu Organization: GNUs Not Usenet Lines: 48 Hi, G++ 1.32 fails when presented with strange input like this: ---------------------------------------- typedef int *win_error_function(int, int); int win_errorhandler(win_error_function); ---------------------------------------- The following patches fix this problem: ---------------------------------------- *** cplus-decl.c.~1~ Tue Jan 17 23:07:21 1989 --- cplus-decl.c Thu Jan 19 02:40:53 1989 *************** *** 4245,4256 **** if (TREE_CODE (type) == FUNCTION_TYPE) { ! error ("parameter `%s' invalidly declared function type", IDENTIFIER_POINTER (declarator)); type = build_pointer_type (type); } else if (TREE_CODE (type) == MEMBER_TYPE) { ! error ("parameter `%s' invalidly declared member type", IDENTIFIER_POINTER (declarator)); type = build_pointer_type (type); } --- 4245,4262 ---- if (TREE_CODE (type) == FUNCTION_TYPE) { ! if (declarator == NULL_TREE) ! error ("formal parameter invalidly declared function type"); ! else ! error ("parameter `%s' invalidly declared function type", IDENTIFIER_POINTER (declarator)); type = build_pointer_type (type); } else if (TREE_CODE (type) == MEMBER_TYPE) { ! if (declarator == NULL_TREE) ! error ("formal parameter invalidly declared member type"); ! else ! error ("parameter `%s' invalidly declared member type", IDENTIFIER_POINTER (declarator)); type = build_pointer_type (type); }