From 2999d4efba8e178c2cd7e146b58f4441eddc33bc Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 1 Oct 2018 15:44:27 -0700 Subject: [PATCH] small Join optimizations --- util.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/util.go b/util.go index e3a2913..5753628 100644 --- a/util.go +++ b/util.go @@ -18,6 +18,14 @@ func Split(m Multiaddr) []Multiaddr { // Join returns a combination of addresses. func Join(ms ...Multiaddr) Multiaddr { + switch len(ms) { + case 0: + // empty multiaddr, unfortunately, we have callers that rely on + // this contract. + return multiaddr{} + case 1: + return ms[0] + } length := 0 bs := make([][]byte, len(ms)) @@ -29,10 +37,7 @@ func Join(ms ...Multiaddr) Multiaddr { bidx := 0 b := make([]byte, length) for _, mb := range bs { - for i := range mb { - b[bidx] = mb[i] - bidx++ - } + bidx += copy(b[bidx:], mb) } return multiaddr{bytes: b} }