aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.c
diff options
context:
space:
mode:
authorAlexandre Petit-Bianco <apbianco@cygnus.com>1999-08-19 20:37:04 +0000
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>1999-08-19 13:37:04 -0700
commit79d133336a745c897ed0b1deedfe0e6cda8f40cb (patch)
tree1ac66ba96f8381766f2d36c668fef7cd934a08a0 /gcc/java/parse.c
parent852be00c009c96d573dacad6007a63f8076a6c9c (diff)
downloadgcc-79d133336a745c897ed0b1deedfe0e6cda8f40cb.zip
gcc-79d133336a745c897ed0b1deedfe0e6cda8f40cb.tar.gz
gcc-79d133336a745c897ed0b1deedfe0e6cda8f40cb.tar.bz2
re GNATS gcj/17 (Internal error: segfault on import-classname clash)
Thu Aug 19 10:26:18 1999 Alexandre Petit-Bianco <apbianco@cygnus.com> * parse.y (method_header): Return a null pointer if the current class node is null. (finish_method_declaration): Return if the current function decl is null. (source_start_java_method): Likewise. (java_method_add_stmt): Likewise. This fixes the net PR #17. From-SVN: r28765
Diffstat (limited to 'gcc/java/parse.c')
-rw-r--r--gcc/java/parse.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/gcc/java/parse.c b/gcc/java/parse.c
index 6f900b4..2c7cf88 100644
--- a/gcc/java/parse.c
+++ b/gcc/java/parse.c
@@ -2231,7 +2231,7 @@ static const short yycheck[] = { 3,
#define YYPURE 1
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-#line 3 "/usr/cygnus/gnupro-98r1/share/bison.simple"
+#line 3 "/usr/share/misc/bison.simple"
/* Skeleton output parser for bison,
Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
@@ -2248,7 +2248,7 @@ static const short yycheck[] = { 3,
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
@@ -2382,8 +2382,10 @@ int yydebug; /* nonzero means print parse trace */
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
+#ifndef YYPARSE_PARAM
int yyparse (void);
#endif
+#endif
#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
@@ -2424,7 +2426,7 @@ __yy_memcpy (char *to, char *from, int count)
#endif
#endif
-#line 196 "/usr/cygnus/gnupro-98r1/share/bison.simple"
+#line 196 "/usr/share/misc/bison.simple"
/* The user can define YYPARSE_PARAM as the name of an argument to be passed
into yyparse. The argument should have type void *.
@@ -4713,7 +4715,7 @@ case 495:
break;}
}
/* the action file gets copied in in place of this dollarsign */
-#line 498 "/usr/cygnus/gnupro-98r1/share/bison.simple"
+#line 498 "/usr/share/misc/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
@@ -5922,13 +5924,18 @@ method_header (flags, type, mdecl, throws)
{
tree meth = TREE_VALUE (mdecl);
tree id = TREE_PURPOSE (mdecl);
- tree this_class = TREE_TYPE (ctxp->current_parsed_class);
tree type_wfl = NULL_TREE;
- tree meth_name = NULL_TREE, current, orig_arg;
+ tree meth_name = NULL_TREE;
+ tree current, orig_arg, this_class;
int saved_lineno;
int constructor_ok = 0, must_chain;
check_modifiers_consistency (flags);
+
+ if (ctxp->current_parsed_class)
+ this_class = TREE_TYPE (ctxp->current_parsed_class);
+ else
+ return NULL_TREE;
/* There are some forbidden modifiers for an abstract method and its
class must be abstract as well. */
@@ -6124,7 +6131,12 @@ static void
finish_method_declaration (method_body)
tree method_body;
{
- int flags = get_access_flags_from_decl (current_function_decl);
+ int flags;
+
+ if (!current_function_decl)
+ return;
+
+ flags = get_access_flags_from_decl (current_function_decl);
/* 8.4.5 Method Body */
if ((flags & ACC_ABSTRACT || flags & ACC_NATIVE) && method_body)
@@ -8101,6 +8113,9 @@ source_start_java_method (fndecl)
tree parm_decl;
int i;
+ if (!fndecl)
+ return;
+
current_function_decl = fndecl;
/* New scope for the function */
@@ -8219,6 +8234,9 @@ source_end_java_method ()
tree fndecl = current_function_decl;
int flag_asynchronous_exceptions = asynchronous_exceptions;
+ if (!fndecl)
+ return;
+
java_parser_context_save_global ();
lineno = ctxp->last_ccb_indent1;
@@ -8274,6 +8292,8 @@ tree
java_method_add_stmt (fndecl, expr)
tree fndecl, expr;
{
+ if (!fndecl)
+ return NULL;
return add_stmt_to_block (GET_CURRENT_BLOCK (fndecl), NULL_TREE, expr);
}