diff options
author | Pekka Enberg <penberg@kernel.org> | 2011-02-16 19:44:28 +0000 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2011-02-16 19:44:28 +0000 |
commit | eace3ded0136a5bbe99eef4d0bbb13798c38f99a (patch) | |
tree | 2567b42b7cd5dd505c730797dfde086f93cf2cdd | |
parent | d7390c930d8f10c84902ee8ec008735939584541 (diff) | |
download | classpath-eace3ded0136a5bbe99eef4d0bbb13798c38f99a.tar.gz |
Fix Formatter.parseInt() wrt. leading zeroes
The following test case:
public class StringTest {
public static void main(String[] args) {
System.out.println(String.format("%08x", 1234));
}
}
produces the following error:
Exception in thread "main" java.lang.NumberFormatException: invalid character at position 2 in 08
at java.lang.Integer.parseInt(Integer.java:837)
at java.lang.Integer.decode(Integer.java:568)
at java.util.Formatter.parseInt(Formatter.java:1191)
at java.util.Formatter.parseArgumentIndex(Formatter.java:1212)
at java.util.Formatter.format(Formatter.java:1326)
at java.util.Formatter.format(Formatter.java:1442)
at java.lang.String.format(String.java:1984)
at java.lang.String.format(String.java:1990)
at StringTest.main(StringTest.java:3)
This patch fixes the issue by switching to Integer.parseInt() in
java.util.Formatter.parseInt().
Reviewed-by: Dr Andrew John Hughes <gnu_andrew@member.fsf.org>
2010-02-16 Pekka Enberg <penberg@kernel.org>
* java/util/Formatter.java:
(parseInt): Use Integer.parseInt() insted of Integer.decode()
because the latter doesn't work with leading zeros which are
used in String.format() formatting, for example.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | java/util/Formatter.java | 2 |
2 files changed, 8 insertions, 1 deletions
@@ -1,3 +1,10 @@ +2010-02-16 Pekka Enberg <penberg@kernel.org> + + * java/util/Formatter.java: + (parseInt): Use Integer.parseInt() insted of Integer.decode() + because the latter doesn't work with leading zeros which are + used in String.format() formatting, for example. + 2010-07-02 Ivan Maidanski <ivmai@mail.ru> * java/util/regex/Pattern.java: diff --git a/java/util/Formatter.java b/java/util/Formatter.java index 04ae8058d..62f684562 100644 --- a/java/util/Formatter.java +++ b/java/util/Formatter.java @@ -1188,7 +1188,7 @@ public final class Formatter advance(); if (start == index) return -1; - return Integer.decode(format.substring(start, index)); + return Integer.parseInt(format.substring(start, index)); } /** |