diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-02 01:18:45 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-02 01:18:45 +0000 |
commit | 4876d8f7c009fb2acf5359cdaaa6aa77c0b90166 (patch) | |
tree | 1107afaacc3de84f9c543f1f5b47ea68a0383ad2 /libjava | |
parent | a91037ea089fb79092b9f0ac546a90b969187bb1 (diff) | |
download | gcc-4876d8f7c009fb2acf5359cdaaa6aa77c0b90166.tar.gz |
2005-04-01 Mark Anderson <mark@panonet.net>
* java/lang/natDouble.cc (parseDouble): Handle NaN, Infinity and
-Infinity as parameters.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97424 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 5 | ||||
-rw-r--r-- | libjava/java/lang/natDouble.cc | 19 |
2 files changed, 22 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3a928e5177c..50b0f95b6a5 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2005-04-01 Mark Anderson <mark@panonet.net> + + * java/lang/natDouble.cc (parseDouble): Handle NaN, Infinity and + -Infinity as parameters. + 2005-04-01 Michael Koch <konqueror@gmx.de> * java/io/PipedInputStream.java diff --git a/libjava/java/lang/natDouble.cc b/libjava/java/lang/natDouble.cc index dfec5967a9b..72fe5fbe1c6 100644 --- a/libjava/java/lang/natDouble.cc +++ b/libjava/java/lang/natDouble.cc @@ -1,6 +1,6 @@ // natDouble.cc - Implementation of java.lang.Double native methods. -/* Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005 Free Software Foundation This file is part of libgcj. @@ -167,11 +167,15 @@ java::lang::Double::parseDouble(jstring str) length--; // The String could end with a f/F/d/D which is valid but we don't need. + bool saw_trailer = false; if (length > 0) { jchar last = str->charAt(length-1); if (last == 'f' || last == 'F' || last == 'd' || last == 'D') - length--; + { + length--; + saw_trailer = true; + } } jsize start = 0; @@ -186,6 +190,17 @@ java::lang::Double::parseDouble(jstring str) jsize blength = _Jv_GetStringUTFRegion (str, start, length, data); data[blength] = 0; + if (! saw_trailer) + { + if (! strcmp (data, "NaN") || ! strcmp (data, "+NaN") + || ! strcmp (data, "-NaN")) + return NaN; + else if (! strcmp (data, "Infinity") || ! strcmp (data, "+Infinity")) + return POSITIVE_INFINITY; + else if (! strcmp (data, "-Infinity")) + return NEGATIVE_INFINITY; + } + struct _Jv_reent reent; memset (&reent, 0, sizeof reent); |