Revision: 8332
Author: r...@google.com
Date: Tue Jun 29 09:06:34 2010
Log: Patch by T. Broyer - Fix issue 5065: Float.parseFloat and Double.parseDouble are too strict validating input (issue647802)

Review at http://gwt-code-reviews.appspot.com/661802

Review by: rj...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=8332

Modified:
 /trunk/user/super/com/google/gwt/emul/java/lang/Number.java
 /trunk/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java
 /trunk/user/test/com/google/gwt/emultest/java/lang/FloatTest.java

=======================================
--- /trunk/user/super/com/google/gwt/emul/java/lang/Number.java Mon Jun 7 09:38:44 2010 +++ /trunk/user/super/com/google/gwt/emul/java/lang/Number.java Tue Jun 29 09:06:34 2010
@@ -345,7 +345,7 @@
     var floatRegex = @java.lang.Number::floatRegex;
     if (!floatRegex) {
       // Disallow '.' with no digits on either side
- floatRegex = @java.lang.Number::floatRegex = /^\s*[+-]?((\d+\.?\d*)| (\.\d+))([eE][+-]?\d+)?\s*$/i; + floatRegex = @java.lang.Number::floatRegex = /^\s*[+-]?((\d+\.?\d*)| (\.\d+))([eE][+-]?\d+)?[dDfF]?\s*$/i;
     }
     if (floatRegex.test(str)) {
       return parseFloat(str);
=======================================
--- /trunk/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java Fri Jun 11 10:06:45 2010 +++ /trunk/user/test/com/google/gwt/emultest/java/lang/DoubleTest.java Tue Jun 29 09:06:34 2010
@@ -151,5 +151,11 @@
     assertTrue(-2.56789e1 == Double.parseDouble("  -2.56789E1"));
     assertTrue(-2.56789e1 == Double.parseDouble("-2.56789e+01   "));
     assertTrue(-2.56789e1 == Double.parseDouble("   -2.56789E1   "));
+
+    // Test that a float/double type suffix is allowed
+    assertEquals(1.0d, Double.parseDouble("1.0f"), 0.0);
+    assertEquals(1.0d, Double.parseDouble("1.0F"), 0.0);
+    assertEquals(1.0d, Double.parseDouble("1.0d"), 0.0);
+    assertEquals(1.0d, Double.parseDouble("1.0D"), 0.0);
   }
 }
=======================================
--- /trunk/user/test/com/google/gwt/emultest/java/lang/FloatTest.java Thu Feb 25 10:33:31 2010 +++ /trunk/user/test/com/google/gwt/emultest/java/lang/FloatTest.java Tue Jun 29 09:06:34 2010
@@ -78,6 +78,13 @@
     assertEquals(-1.5f, Float.parseFloat("-1.5"), 0.0);
     assertEquals(3.0f, Float.parseFloat("3."), 0.0);
     assertEquals(0.5f, Float.parseFloat(".5"), 0.0);
+
+    // Test that a float/double type suffix is allowed
+    assertEquals(1.0f, Float.parseFloat("1.0f"), 0.0);
+    assertEquals(1.0f, Float.parseFloat("1.0F"), 0.0);
+    assertEquals(1.0f, Float.parseFloat("1.0d"), 0.0);
+    assertEquals(1.0f, Float.parseFloat("1.0D"), 0.0);
+
// TODO(jat): it isn't safe to parse MAX/MIN_VALUE because we also want to // be able to get POSITIVE/NEGATIVE_INFINITY for out-of-range values, and
     // since all math in JS is done in double we can't rely on getting the

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to