Applying dmenzi's patch to fix issue 7291, which causes Integer.parseInt to fail on BlackBerry OS7.
Change-Id: I41bfc55c699a36f0b4989b7e395a27181a6d5db7
Review-Link: https://gwt-review.googlesource.com/#/c/2120/
Review by: mdempsky@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@11541 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/super/com/google/gwt/emul/java/lang/Number.java b/user/super/com/google/gwt/emul/java/lang/Number.java
index ab89197..f281d02 100644
--- a/user/super/com/google/gwt/emul/java/lang/Number.java
+++ b/user/super/com/google/gwt/emul/java/lang/Number.java
@@ -215,9 +215,12 @@
}
int toReturn = __parseInt(s, radix);
+ // isTooLow is separated into its own variable to avoid a bug in BlackBerry OS 7. See
+ // https://code.google.com/p/google-web-toolkit/issues/detail?id=7291.
+ boolean isTooLow = toReturn < lowerBound;
if (__isNaN(toReturn)) {
throw NumberFormatException.forInputString(s);
- } else if (toReturn < lowerBound || toReturn > upperBound) {
+ } else if (isTooLow || toReturn > upperBound) {
throw NumberFormatException.forInputString(s);
}
diff --git a/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java b/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
index f008436..d36d607 100644
--- a/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/IntegerTest.java
@@ -261,8 +261,16 @@
public void testValueOf() {
assertEquals(new Integer(12345), Integer.valueOf("12345"));
assertEquals(new Integer(1865), Integer.valueOf("12345", 6));
+ }
+
+ public void testParseInt() {
assertEquals(12345, Integer.parseInt("12345"));
assertEquals(1865, Integer.parseInt("12345", 6));
+ assertEquals(0, Integer.parseInt("0"));
+ assertEquals(Integer.MAX_VALUE,
+ Integer.parseInt(String.valueOf(Integer.MAX_VALUE)));
+ assertEquals(Integer.MIN_VALUE,
+ Integer.parseInt(String.valueOf(Integer.MIN_VALUE)));
}
public void testXValue() {