Patch for concurrent iterator & others (onto v1.11.6) #386
@ -405,6 +405,14 @@ func (t *Trie) delete(n node, prefix, key []byte) (bool, node, error) {
|
||||
n.flags = t.newFlag()
|
||||
n.Children[key[0]] = nn
|
||||
|
||||
// Because n is a full node, it must've contained at least two children
|
||||
// before the delete operation. If the new child value is non-nil, n still
|
||||
// has at least two children after the deletion, and cannot be reduced to
|
||||
// a short node.
|
||||
if nn != nil {
|
||||
return true, n, nil
|
||||
}
|
||||
// Reduction:
|
||||
// Check how many non-nil entries are left after deleting and
|
||||
// reduce the full node to a short node if only one entry is
|
||||
// left. Since n must've contained at least two children
|
||||
|
Loading…
Reference in New Issue
Block a user