changeset 2008:e740080fd1a4

6897550: BigInteger constructor should use local cached String length Reviewed-by: andrew, chegar
author darcy
date Tue, 03 Nov 2009 15:01:50 -0800
parents fe9db22a220f
children 6b48ea20e0b9 f243cf590b18
files src/share/classes/java/math/BigInteger.java
diffstat 1 files changed, 4 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/java/math/BigInteger.java	Fri Oct 30 21:31:02 2009 +0000
+++ b/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)