6882235: invalid exponent causes silent javac crash

Tue, 15 Sep 2009 12:20:55 -0700

author
jjg
date
Tue, 15 Sep 2009 12:20:55 -0700
changeset 408
9dd34ed62341
parent 407
f8be8bf150c3
child 409
69eaccd3ea85

6882235: invalid exponent causes silent javac crash
Reviewed-by: darcy

src/share/classes/com/sun/tools/javac/parser/JavacParser.java file | annotate | diff | comparison | revisions
test/tools/javac/T6882235.java file | annotate | diff | comparison | revisions
test/tools/javac/T6882235.out file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Mon Sep 14 17:13:00 2009 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Tue Sep 15 12:20:55 2009 -0700
     1.3 @@ -593,7 +593,7 @@
     1.4  //where
     1.5          boolean isZero(String s) {
     1.6              char[] cs = s.toCharArray();
     1.7 -            int base = ((Character.toLowerCase(s.charAt(1)) == 'x') ? 16 : 10);
     1.8 +            int base = ((cs.length > 1 && Character.toLowerCase(cs[1]) == 'x') ? 16 : 10);
     1.9              int i = ((base==16) ? 2 : 0);
    1.10              while (i < cs.length && (cs[i] == '0' || cs[i] == '.')) i++;
    1.11              return !(i < cs.length && (Character.digit(cs[i], base) > 0));
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/test/tools/javac/T6882235.java	Tue Sep 15 12:20:55 2009 -0700
     2.3 @@ -0,0 +1,14 @@
     2.4 +/*
     2.5 + * @test /nodynamiccopyright/
     2.6 + * @bug 6882235
     2.7 + * @summary invalid exponent causes silent javac crash
     2.8 + *
     2.9 + * @compile/fail T6882235.java
    2.10 + * @compile/fail/ref=T6882235.out -XDrawDiagnostics T6882235.java
    2.11 + */
    2.12 +
    2.13 +class T6882235 {
    2.14 +    int i = ;           // invalid expression
    2.15 +    float f = 0e*;      // invalid exponent, should not crash compiler
    2.16 +    int j = ;           // invalid expression
    2.17 +}
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/test/tools/javac/T6882235.out	Tue Sep 15 12:20:55 2009 -0700
     3.3 @@ -0,0 +1,5 @@
     3.4 +T6882235.java:11:13: compiler.err.illegal.start.of.expr
     3.5 +T6882235.java:12:15: compiler.err.malformed.fp.lit
     3.6 +T6882235.java:12:18: compiler.err.illegal.start.of.expr
     3.7 +T6882235.java:13:13: compiler.err.illegal.start.of.expr
     3.8 +4 errors

mercurial