6897550: BigInteger constructor should use local cached String length
authordarcy
Tue, 03 Nov 2009 15:01:50 -0800
changeset 4182 ffdc79c88a0e
parent 4181 12101ac6820d
child 4183 0e342cecb3a9
child 4224 3cfc595ac892
6897550: BigInteger constructor should use local cached String length Reviewed-by: andrew, chegar
jdk/src/share/classes/java/math/BigInteger.java
--- a/jdk/src/share/classes/java/math/BigInteger.java	Fri Oct 30 21:31:02 2009 +0000
+++ b/jdk/src/share/classes/java/math/BigInteger.java	Tue Nov 03 15:01:50 2009 -0800
@@ -288,11 +288,11 @@
      */
     public BigInteger(String val, int radix) {
         int cursor = 0, numDigits;
-        int len = val.length();
+        final int len = val.length();
 
         if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
             throw new NumberFormatException("Radix out of range");
-        if (val.length() == 0)
+        if (len == 0)
             throw new NumberFormatException("Zero length BigInteger");
 
         // Check for at most one leading sign
@@ -303,7 +303,7 @@
             // No leading sign character or at most one leading sign character
             if (index1 == 0 || index2 == 0) {
                 cursor = 1;
-                if (val.length() == 1)
+                if (len == 1)
                     throw new NumberFormatException("Zero length BigInteger");
             }
             if (index1 == 0)
@@ -342,7 +342,7 @@
         // Process remaining digit groups
         int superRadix = intRadix[radix];
         int groupVal = 0;
-        while (cursor < val.length()) {
+        while (cursor < len) {
             group = val.substring(cursor, cursor += digitsPerInt[radix]);
             groupVal = Integer.parseInt(group, radix);
             if (groupVal < 0)