Author: toad
Date: 2006-12-09 21:39:49 +0000 (Sat, 09 Dec 2006)
New Revision: 11327

Modified:
   trunk/freenet/src/freenet/support/Fields.java
Log:
Parse multiplier as a long if we can.

Modified: trunk/freenet/src/freenet/support/Fields.java
===================================================================
--- trunk/freenet/src/freenet/support/Fields.java       2006-12-09 21:39:28 UTC 
(rev 11326)
+++ trunk/freenet/src/freenet/support/Fields.java       2006-12-09 21:39:49 UTC 
(rev 11327)
@@ -597,7 +597,7 @@
                                        1000 * 1000,
                                        1 << 20,
                                        1000l * 1000l * 1000l,
-                                       1 << 30,
+                                       1l << 30,
                                        1000l * 1000l * 1000l * 1000l,
                                        1l << 40,
                                        1000l * 1000l * 1000l * 1000l * 1000,
@@ -609,7 +609,14 @@
                                x--;
                                res *= l[idx];
                        }
-                       res *= Double.parseDouble(s.substring(0, x + 1));
+                       String multiplier = s.substring(0, x + 1);
+                       if(multiplier.indexOf('.') > -1 || 
multiplier.indexOf('E') > -1) {
+                               res *= Double.parseDouble(multiplier);
+                               if(Logger.shouldLog(Logger.MINOR, 
Fields.class)) Logger.minor(Fields.class, "Parsed "+multiplier+" of "+s+" as 
double: "+res);
+                       } else {
+                               res *= Long.parseLong(multiplier);
+                               if(Logger.shouldLog(Logger.MINOR, 
Fields.class)) Logger.minor(Fields.class, "Parsed "+multiplier+" of "+s+" as 
long: "+res);
+                       }
                } catch (ArithmeticException e) {
                        res = Long.MAX_VALUE;
                        throw new NumberFormatException(e.getMessage());


Reply via email to