diff --git a/p2p/peer_set.go b/p2p/peer_set.go index 2151a707d..ade9abcac 100644 --- a/p2p/peer_set.go +++ b/p2p/peer_set.go @@ -50,14 +50,15 @@ func (ps *PeerSet) Remove(peer *Peer) { return } index := item.index + // Copy the list but without the last element. + // (we must copy because we're mutating the list) + newList := make([]*Peer, len(ps.list)-1) + copy(newList, ps.list) // If it's the last peer, that's an easy special case. if index == len(ps.list)-1 { - ps.list = ps.list[:len(ps.list)-1] + ps.list = newList return } - // Copy the list but without the last element. - newList := make([]*Peer, len(ps.list)-1) - copy(newList, ps.list) // Move the last item from ps.list to "index" in list. lastPeer := ps.list[len(ps.list)-1] lastPeerAddr := lastPeer.RemoteAddress().String()