From 64657b4bc2709f0f1d2e8291ec2aee9d4e4628fc Mon Sep 17 00:00:00 2001 From: mark Date: Mon, 15 Apr 2002 03:11:12 +0000 Subject: 2002-04-13 Adam King * java/lang/natDouble.cc (parseDouble): Allow a number to end with the f/F/d/D modifiers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52308 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 5 +++++ libjava/java/lang/natDouble.cc | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 4e8eb0336df..611da763eb6 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2002-04-13 Adam King + + * java/lang/natDouble.cc (parseDouble): Allow a number to end with + the f/F/d/D modifiers. + 2002-04-12 Anthony Green * Makefile.am (jardir, jar_DATA): Define (for libgcj.jar). diff --git a/libjava/java/lang/natDouble.cc b/libjava/java/lang/natDouble.cc index b0b24a7547c..329795d3e21 100644 --- a/libjava/java/lang/natDouble.cc +++ b/libjava/java/lang/natDouble.cc @@ -161,9 +161,19 @@ jdouble java::lang::Double::parseDouble(jstring str) { int length = str->length(); + while (length > 0 && Character::isWhitespace(str->charAt(length - 1))) length--; + + // The String could end with a f/F/d/D which is valid but we don't need. + if (length > 0) + { + jchar last = str->charAt(length-1); + if (last == 'f' || last == 'F' || last == 'd' || last == 'D') + length--; + } + jsize start = 0; while (length > 0 && Character::isWhitespace(str->charAt(start))) @@ -184,7 +194,7 @@ java::lang::Double::parseDouble(jstring str) if (endptr == data + blength) return val; } - throw new NumberFormatException; + throw new NumberFormatException(str); } void -- cgit v1.2.3