Author: bayard
Date: Tue Aug  3 04:41:04 2010
New Revision: 981736

URL: http://svn.apache.org/viewvc?rev=981736&view=rev
Log:
Making it so that NumberUtils.createNumber throws a NumberFormatException 
instead of a StringIndexOutOfBoundsException when Strings such as 1eE are 
passed in. Thanks to Ingo Heinrich's report and patch in LANG-638

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
    
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java?rev=981736&r1=981735&r2=981736&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
 (original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/math/NumberUtils.java
 Tue Aug  3 04:41:04 2010
@@ -476,7 +476,7 @@ public class NumberUtils {
         if (decPos > -1) {
 
             if (expPos > -1) {
-                if (expPos < decPos) {
+                if (expPos < decPos || expPos > str.length()) {
                     throw new NumberFormatException(str + " is not a valid 
number.");
                 }
                 dec = str.substring(decPos + 1, expPos);
@@ -486,6 +486,9 @@ public class NumberUtils {
             mant = str.substring(0, decPos);
         } else {
             if (expPos > -1) {
+                if (expPos > str.length()) {
+                    throw new NumberFormatException(str + " is not a valid 
number.");
+                }
                 mant = str.substring(0, expPos);
             } else {
                 mant = str;

Modified: 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java?rev=981736&r1=981735&r2=981736&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
 (original)
+++ 
commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java
 Tue Aug  3 04:41:04 2010
@@ -211,6 +211,9 @@ public class NumberUtilsTest extends Tes
 
         // LANG-521
         assertEquals("createNumber(String) LANG-521 failed", new Float("2."), 
NumberUtils.createNumber("2."));
+
+        // LANG-638
+        assertFalse("createNumber(String) succeeded", 
checkCreateNumber("1eE"));
     }
 
     public void testCreateFloat() {


Reply via email to