From 14e545b60a8c78aa6609d807b4f50e54e9bfe1eb Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Wed, 12 Oct 2016 11:36:18 -0700 Subject: [PATCH] archive/tar: reduce allocations in formatOctal Change-Id: I9ddb7d2a97d28aba7a107b65f278993daf7807fa Reviewed-on: https://go-review.googlesource.com/30960 Reviewed-by: Brad Fitzpatrick Run-TryBot: Joe Tsai TryBot-Result: Gobot Gobot --- src/archive/tar/strconv.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/archive/tar/strconv.go b/src/archive/tar/strconv.go index 2619bcdde4..45e46b13b8 100644 --- a/src/archive/tar/strconv.go +++ b/src/archive/tar/strconv.go @@ -156,12 +156,11 @@ func (p *parser) parseOctal(b []byte) int64 { return int64(x) } -// Encode x as an octal ASCII string and write it into b with leading zeros. func (f *formatter) formatOctal(b []byte, x int64) { s := strconv.FormatInt(x, 8) - // leading zeros, but leave room for a NUL. - for len(s)+1 < len(b) { - s = "0" + s + // Add leading zeros, but leave room for a NUL. + if n := len(b) - len(s) - 1; n > 0 { + s = strings.Repeat("0", n) + s } f.formatString(b, s) } -- 2.48.1