From 79c314d6b9c1aac8a7e1adcfbd3c2e241cfccfac Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 2 Oct 2023 21:28:39 +0800 Subject: [PATCH] fix format %d int call prepend(long, byte[], long), should be call prepend(long, byte[], int) --- .../share/classes/java/util/FormatterBuilder.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/java.base/share/classes/java/util/FormatterBuilder.java b/src/java.base/share/classes/java/util/FormatterBuilder.java index 854fdfef68d35..f78ffdd1c83cb 100644 --- a/src/java.base/share/classes/java/util/FormatterBuilder.java +++ b/src/java.base/share/classes/java/util/FormatterBuilder.java @@ -320,14 +320,16 @@ private MethodHandle formatSpecifier(FormatSpecifier fs, Class ptype) { } case DECIMAL_INTEGER -> { if ((itype == int.class || itype == long.class) && precision == -1) { + if (flags == 0 && isGenericDFS && width == -1) { + return mh; + } + if (itype == int.class) { mh = explicitCastArguments(mh, mh.type().changeReturnType(long.class)); } - if (flags == 0 && isGenericDFS && width == -1) { - return mh; - } else if (validFlags(flags, PLUS | LEADING_SPACE | + if (validFlags(flags, PLUS | LEADING_SPACE | ZERO_PAD | GROUP | PARENTHESES)) { handled = true;