summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/lang/natDouble.cc12
2 files changed, 16 insertions, 1 deletions
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 <aking@dreammechanics.com>
+
+ * java/lang/natDouble.cc (parseDouble): Allow a number to end with
+ the f/F/d/D modifiers.
+
2002-04-12 Anthony Green <green@redhat.com>
* 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