mirror of
https://github.com/golang/go
synced 2024-11-19 07:44:49 -07:00
fmt: integer formatting should not permanently change padding
Changes the integer function to restore the original f.zero value and therefore padding type before returning. Change-Id: I456449259a3d39bd6d62e110553120c31ec63f23 Reviewed-on: https://go-review.googlesource.com/20512 Reviewed-by: Rob Pike <r@golang.org> Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
2f4d420683
commit
d246eedcaa
@ -914,6 +914,9 @@ var fmtTests = []struct {
|
|||||||
{"%06v", []interface{}{+10.0 + 10i, 10}, "[(000010+00010i) 000010]"},
|
{"%06v", []interface{}{+10.0 + 10i, 10}, "[(000010+00010i) 000010]"},
|
||||||
{"%06v", []interface{}{-10.0 + 10i, 10}, "[(-00010+00010i) 000010]"},
|
{"%06v", []interface{}{-10.0 + 10i, 10}, "[(-00010+00010i) 000010]"},
|
||||||
|
|
||||||
|
// integer formatting should not alter padding for other elements.
|
||||||
|
{"%03.6v", []interface{}{1, 2.0, "x"}, "[000001 002 00x]"},
|
||||||
|
|
||||||
// Complex fmt used to leave the plus flag set for future entries in the array
|
// Complex fmt used to leave the plus flag set for future entries in the array
|
||||||
// causing +2+0i and +3+0i instead of 2+0i and 3+0i.
|
// causing +2+0i and +3+0i instead of 2+0i and 3+0i.
|
||||||
{"%v", []complex64{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"},
|
{"%v", []complex64{1, 2, 3}, "[(1+0i) (2+0i) (3+0i)]"},
|
||||||
|
@ -221,6 +221,7 @@ func (f *fmt) integer(a int64, base uint64, signedness bool, digits string) {
|
|||||||
|
|
||||||
// two ways to ask for extra leading zero digits: %.3d or %03d.
|
// two ways to ask for extra leading zero digits: %.3d or %03d.
|
||||||
// apparently the first cancels the second.
|
// apparently the first cancels the second.
|
||||||
|
oldZero := f.zero // f.zero is used in f.pad but modified below; restored at end of function.
|
||||||
prec := 0
|
prec := 0
|
||||||
if f.precPresent {
|
if f.precPresent {
|
||||||
prec = f.prec
|
prec = f.prec
|
||||||
@ -305,6 +306,7 @@ func (f *fmt) integer(a int64, base uint64, signedness bool, digits string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
f.pad(buf[i:])
|
f.pad(buf[i:])
|
||||||
|
f.zero = oldZero
|
||||||
}
|
}
|
||||||
|
|
||||||
// truncate truncates the string to the specified precision, if present.
|
// truncate truncates the string to the specified precision, if present.
|
||||||
|
Loading…
Reference in New Issue
Block a user