Infinitely long compilation

Alexandre Petit-Bianco apbianco@cygnus.com
Fri Mar 29 14:17:00 GMT 2002


Martin Kahlert writes:
> Perhaps the line *separator = c; could simply be left out,

Yes it should, as we're progressively changing the name.
I just re-organized your patch to what's below, gave it a try and I'm
now going to check it in.
Thanks,
2002年03月29日 Martin Kahlert <martin.kahlert@infineon.com>
 * parse.y (do_resolve_class): Fix infinite recursion
Index: parse.y
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/parse.y,v
retrieving revision 1.368
diff -u -p -r1.368 parse.y
--- parse.y 2002年03月29日 21:58:49 1.368
+++ parse.y 2002年03月29日 22:10:21
@@ -5868,18 +5868,20 @@ do_resolve_class (enclosing, class_type,
 applicable and use the matching DECL instead. */
 if (!decl_result && QUALIFIED_P (TYPE_NAME (class_type)))
 {
- tree name = TYPE_NAME (class_type);
 char *separator;
+ tree name = TYPE_NAME (class_type);
+ char *namebuffer = alloca (IDENTIFIER_LENGTH (name) + 1);
+
+ strcpy (namebuffer, IDENTIFIER_POINTER (name));
+
 do {
 
 /* Reach the last '.', and if applicable, replace it by a `$' and
 see if this exists as a type. */
- if ((separator = strrchr (IDENTIFIER_POINTER (name), '.')))
+ if ((separator = strrchr (namebuffer, '.')))
 {
- int c = *separator;
 *separator = '$';
- name = get_identifier (IDENTIFIER_POINTER (name));
- *separator = c;
+ name = get_identifier (namebuffer);
 decl_result = IDENTIFIER_CLASS_VALUE (name);
 }
 } while (!decl_result && separator);


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /