trie: avoid loading the root node twice

New checks whether the root node is present by loading it from the
database. Keep the node around instead of discarding it.
release/1.5
Felix Lange 8 years ago
parent b19b7c39ac
commit 187d6a66a5
  1. 10
      trie/trie.go

@ -93,13 +93,11 @@ func New(root common.Hash, db Database) (*Trie, error) {
if db == nil {
panic("trie.New: cannot use existing root without a database")
}
if v, _ := trie.db.Get(root[:]); len(v) == 0 {
return nil, &MissingNodeError{
RootHash: root,
NodeHash: root,
}
rootnode, err := trie.resolveHash(root[:], nil, nil)
if err != nil {
return nil, err
}
trie.root = hashNode(root.Bytes())
trie.root = rootnode
}
return trie, nil
}

Loading…
Cancel
Save