You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by hi...@apache.org on 2006/06/16 16:27:29 UTC

svn commit: r414834 - in /incubator/harmony/enhanced/classlib/trunk/modules/luni/src: main/java/org/apache/harmony/luni/util/FloatingPointParser.java test/java/tests/api/java/lang/DoubleTest.java

Author: hindessm
Date: Fri Jun 16 07:27:29 2006
New Revision: 414834

URL: http://svn.apache.org/viewvc?rev=414834&view=rev
Log:
Applying patch from "[#HARMONY-489] new Double("1E+-20") should throw
exception but doesn't"

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/lang/DoubleTest.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java?rev=414834&r1=414833&r2=414834&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/org/apache/harmony/luni/util/FloatingPointParser.java Fri Jun 16 07:27:29 2006
@@ -111,10 +111,23 @@
 			if (end + 1 == length)
 				throw new NumberFormatException(s);
 
-			if (s.charAt(end + 1) == '+')
-				e = Integer.parseInt(s.substring(end + 2, length));
-			else
-				e = Integer.parseInt(s.substring(end + 1, length));
+                        int exponent_offset = end + 1;
+                        if (s.charAt(exponent_offset) == '+') {
+                                if (s.charAt(exponent_offset + 1) == '-') {
+                                        throw new NumberFormatException(s);
+                                }
+                                exponent_offset++; // skip the plus sign
+                        }
+			try {
+				e = Integer.parseInt(s.substring(exponent_offset,
+                                                                 length));
+                        } catch (NumberFormatException ex) {
+                                // ex contains the exponent substring
+                                // only so throw a new exception with
+                                // the correct string
+				throw new NumberFormatException(s);
+                        }                            
+                                    
 		} else {
 			end = length;
 		}

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/lang/DoubleTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/lang/DoubleTest.java?rev=414834&r1=414833&r2=414834&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/lang/DoubleTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/lang/DoubleTest.java Fri Jun 16 07:27:29 2006
@@ -303,6 +303,14 @@
 		Double d = new Double("39089.88888888888888888888888888888888");
 		assertEquals("Created incorrect double",
 				39089.88888888888888888888888888888888, d.doubleValue());
+
+                // REGRESSION for HARMONY-489
+                try {
+                        d = new Double("1E+-20");
+                        fail("new Double(\"1E+-20\") should throw exception");
+                } catch (NumberFormatException e) {
+                        // expected
+                }
 	}
 
 	/**