Fix in-place removal

This commit is contained in:
Audrius Butkevicius 2014-07-28 00:08:15 +01:00
parent 3b65a58f59
commit 2546930a1a

View File

@ -403,16 +403,18 @@ func ensureNodePresent(nodes []NodeConfiguration, myID protocol.NodeID) []NodeCo
} }
func ensureExistingNodes(nodes []NodeConfiguration, existingNodes map[protocol.NodeID]bool) []NodeConfiguration { func ensureExistingNodes(nodes []NodeConfiguration, existingNodes map[protocol.NodeID]bool) []NodeConfiguration {
count := len(nodes)
i := 0 i := 0
for _, node := range nodes { loop:
if _, ok := existingNodes[node.NodeID]; !ok { for i < count {
last := len(nodes) - 1 if _, ok := existingNodes[nodes[i].NodeID]; !ok {
nodes[i] = nodes[last] nodes[i] = nodes[count-1]
nodes = nodes[:last] count--
} else { continue loop
i++
} }
i++
} }
nodes = nodes[0:count]
sort.Sort(NodeConfigurationList(nodes)) sort.Sort(NodeConfigurationList(nodes))