From 704401ffa06c60e059c9e6e4048045b4ff42530a Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Sun, 14 Jan 2024 15:34:49 +1100 Subject: [PATCH] fmt: don't pad strings with zeros It's what the documentation says, and oddly it already behaves correctly for right padding, not left. (We never pad with zeros on the right.) Just don't do it. Fixes #56486 Change-Id: I2465edea93c69084e33bee0d945d5a1b85e6cd14 Reviewed-on: https://go-review.googlesource.com/c/go/+/555776 Reviewed-by: Russ Cox TryBot-Result: Gopher Robot Run-TryBot: Rob Pike Reviewed-by: Cherry Mui --- src/fmt/fmt_test.go | 4 ++-- src/fmt/print.go | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/fmt/fmt_test.go b/src/fmt/fmt_test.go index 6a79862f28..3f82fb6814 100644 --- a/src/fmt/fmt_test.go +++ b/src/fmt/fmt_test.go @@ -304,8 +304,8 @@ var fmtTests = []struct { {"%2s", []byte("\u263a"), " ☺"}, {"%-5s", "abc", "abc "}, {"%-5s", []byte("abc"), "abc "}, - {"%05s", "abc", "00abc"}, - {"%05s", []byte("abc"), "00abc"}, + {"%05s", "abc", " abc"}, + {"%05s", []byte("abc"), " abc"}, {"%5s", "abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz"}, {"%5s", []byte("abcdefghijklmnopqrstuvwxyz"), "abcdefghijklmnopqrstuvwxyz"}, {"%.5s", "abcdefghijklmnopqrstuvwxyz", "abcde"}, diff --git a/src/fmt/print.go b/src/fmt/print.go index cb393bd763..9596888854 100644 --- a/src/fmt/print.go +++ b/src/fmt/print.go @@ -703,6 +703,11 @@ func (p *pp) printArg(arg any, verb rune) { return } + // Bug fix: avoid padding strings with zeros. Issue 56486. + if verb == 's' { + p.fmt.zero = false + } + // Some types can be done without reflection. switch f := arg.(type) { case bool: -- 2.48.1