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 {
count := len(nodes)
i := 0
for _, node := range nodes {
if _, ok := existingNodes[node.NodeID]; !ok {
last := len(nodes) - 1
nodes[i] = nodes[last]
nodes = nodes[:last]
} else {
i++
loop:
for i < count {
if _, ok := existingNodes[nodes[i].NodeID]; !ok {
nodes[i] = nodes[count-1]
count--
continue loop
}
i++
}
nodes = nodes[0:count]
sort.Sort(NodeConfigurationList(nodes))