Commit 7bf24dca authored by mwnx's avatar mwnx

Fix CodeToVarint []byte size

We were missing a logarithm... CodeToVarint would previously allocate
more bytes than necessary (exponentially) for the varint slice. This bug
was silent but deserves to be fixed nonetheless.
parent ae494b7f
......@@ -4,6 +4,7 @@ import (
"encoding/binary"
"fmt"
"strings"
"math/bits"
)
// Protocol is a Multiaddr protocol description structure.
......@@ -117,7 +118,7 @@ func ProtocolsWithString(s string) ([]Protocol, error) {
// CodeToVarint converts an integer to a varint-encoded []byte
func CodeToVarint(num int) []byte {
buf := make([]byte, (num/7)+1) // varint package is uint64
buf := make([]byte, bits.Len(uint(num))/7 + 1)
n := binary.PutUvarint(buf, uint64(num))
return buf[:n]
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment