From: Joe Tsai Date: Wed, 12 Oct 2016 18:36:18 +0000 (-0700) Subject: archive/tar: reduce allocations in formatOctal X-Git-Tag: go1.8beta1~900 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=14e545b60a8c78aa6609d807b4f50e54e9bfe1eb;p=gostls13.git 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 --- 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) }