From 60bb27262ecd8cb116a71056c141060c06e17136 Mon Sep 17 00:00:00 2001 From: Tim Cooper Date: Fri, 21 Nov 2014 15:41:41 -0400 Subject: [PATCH] remove slice allocation from varint.WriteTo --- gumble/varint/write.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/gumble/varint/write.go b/gumble/varint/write.go index 64b56ca..d5f85a8 100644 --- a/gumble/varint/write.go +++ b/gumble/varint/write.go @@ -10,19 +10,18 @@ import ( // On success, the function returns the number of bytes written to the writer, // and nil. func WriteTo(w io.Writer, value int64) (int64, error) { - var buff []byte + var length int + var buff [2]byte if value <= 0x7F { - buff = []byte{ - byte(value), - } + buff[0] = byte(value) + length = 1 } else if value <= 0x3FFF { - buff = []byte{ - byte(((value >> 8) & 0x3F) | 0x80), - byte(value & 0xFF), - } + buff[0] = byte(((value >> 8) & 0x3F) | 0x80) + buff[1] = byte(value & 0xFF) + length = 2 } - if buff != nil { - if n, err := w.Write(buff); err != nil { + if length > 0 { + if n, err := w.Write(buff[:length]); err != nil { return int64(n), err } else { return int64(n), nil