diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | java/util/Formatter.java | 21 |
2 files changed, 28 insertions, 3 deletions
@@ -8,6 +8,16 @@ 2012-03-15 Pekka Enberg <penberg@kernel.org> + * java/util/Formatter.java: + (icharacterFormat(Object,int,int,int,char): + Fix NullPointerException for null characters. + (basicIntegralConversion(Object, int, int, int, int, char): + Fix NullPointerException for null integers. + (format(Locale, String, Object...)): + Fix NullPointerException for null object. + +2012-03-15 Pekka Enberg <penberg@kernel.org> + * java/lang/String.java: (codePointAt(int))): Fix exception type. (codePointBefore(int)): Fix exception type. diff --git a/java/util/Formatter.java b/java/util/Formatter.java index 62f684562..466fab535 100644 --- a/java/util/Formatter.java +++ b/java/util/Formatter.java @@ -678,6 +678,12 @@ public final class Formatter conversion); noPrecision(precision); + if (arg == null) + { + genericFormat("null", flags, width, precision); + return; + } + int theChar; if (arg instanceof Character) theChar = ((Character) arg).charValue(); @@ -748,6 +754,12 @@ public final class Formatter int radix, char conversion) { assert radix == 8 || radix == 10 || radix == 16; + + if (arg == null) + { + return new CPStringBuilder("null"); + } + noPrecision(precision); // Some error checking. @@ -1353,9 +1365,12 @@ public final class Formatter argumentIndex = previousArgumentIndex; // Argument indices start at 1 but array indices at 0. --argumentIndex; - if (argumentIndex < 0 || argumentIndex >= args.length) - throw new MissingFormatArgumentException(format.substring(start, index)); - argument = args[argumentIndex]; + if (args != null) + { + if (argumentIndex < 0 || argumentIndex >= args.length) + throw new MissingFormatArgumentException(format.substring(start, index)); + argument = args[argumentIndex]; + } } switch (conversion) |