Tue, 15 Sep 2009 12:20:55 -0700
6882235: invalid exponent causes silent javac crash
Reviewed-by: darcy
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