From b366f54abe581ccab5984ab655f0a3d7a8db764e Mon Sep 17 00:00:00 2001 From: Tim Cooper Date: Tue, 23 Dec 2014 08:45:24 -0400 Subject: [PATCH] increase varint.WriteTo range --- gumble/varint/write.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gumble/varint/write.go b/gumble/varint/write.go index d5f85a8..19c480b 100644 --- a/gumble/varint/write.go +++ b/gumble/varint/write.go @@ -11,7 +11,7 @@ import ( // and nil. func WriteTo(w io.Writer, value int64) (int64, error) { var length int - var buff [2]byte + var buff [4]byte if value <= 0x7F { buff[0] = byte(value) length = 1 @@ -19,6 +19,17 @@ func WriteTo(w io.Writer, value int64) (int64, error) { buff[0] = byte(((value >> 8) & 0x3F) | 0x80) buff[1] = byte(value & 0xFF) length = 2 + } else if value <= 0x1FFFFF { + buff[0] = byte((value >> 16) & 0x1F | 0xC0) + buff[1] = byte((value >> 8) & 0xFF) + buff[2] = byte(value & 0xFF) + length = 3 + } else if value <= 0xFFFFFFF { + buff[0] = byte((value >> 24) & 0xF | 0xE0) + buff[1] = byte((value >> 16) & 0xFF) + buff[2] = byte((value >> 8) & 0xFF) + buff[3] = byte(value & 0xFF) + length = 4 } if length > 0 { if n, err := w.Write(buff[:length]); err != nil {