aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/io/StreamTokenizer.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/io/StreamTokenizer.java')
-rw-r--r--libjava/java/io/StreamTokenizer.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/libjava/java/io/StreamTokenizer.java b/libjava/java/io/StreamTokenizer.java
index 3c4d8c6..b3c8003 100644
--- a/libjava/java/io/StreamTokenizer.java
+++ b/libjava/java/io/StreamTokenizer.java
@@ -293,16 +293,21 @@ public class StreamTokenizer
ttype = TT_EOF;
else if (isNumeric(ch))
{
+ boolean isNegative = false;
if (ch == '-')
{
// Read ahead to see if this is an ordinary '-' rather than numeric.
ch = in.read();
- if (ch != TT_EOF)
- in.unread(ch);
if (isNumeric(ch) && ch != '-')
- ch = '-';
+ {
+ isNegative = true;
+ }
else
- return (ttype = '-');
+ {
+ if (ch != TT_EOF)
+ in.unread(ch);
+ return (ttype = '-');
+ }
}
StringBuffer tokbuf = new StringBuffer();
@@ -318,7 +323,16 @@ public class StreamTokenizer
if (ch != TT_EOF)
in.unread(ch);
ttype = TT_NUMBER;
- nval = Double.valueOf(tokbuf.toString()).doubleValue();
+ try
+ {
+ nval = Double.valueOf(tokbuf.toString()).doubleValue();
+ }
+ catch (NumberFormatException _)
+ {
+ nval = 0.0;
+ }
+ if (isNegative)
+ nval = -nval;
}
else if (isAlphabetic(ch))
{