mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-12 09:51:36 +00:00
trie/bintrie: merge makeKeyPath into keyToPath
Drop the panic-on-error variant. All callers are inside methods that already propagate errors, so the error-returning form is the right default.
This commit is contained in:
parent
84c61897b3
commit
b3b86a873a
2 changed files with 20 additions and 15 deletions
|
|
@ -34,16 +34,6 @@ func keyToPath(depth int, key []byte) ([]byte, error) {
|
|||
return path, nil
|
||||
}
|
||||
|
||||
// makeKeyPath is like keyToPath but panics on invalid depth.
|
||||
func makeKeyPath(depth int, key []byte) []byte {
|
||||
path := make([]byte, 0, depth+1)
|
||||
for i := range depth + 1 {
|
||||
bit := key[i/8] >> (7 - (i % 8)) & 1
|
||||
path = append(path, bit)
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
||||
type InternalNode struct {
|
||||
left, right NodeRef
|
||||
depth uint8
|
||||
|
|
|
|||
|
|
@ -71,7 +71,10 @@ func (s *NodeStore) getSingle(ref NodeRef, stem []byte, suffix byte, resolver No
|
|||
}
|
||||
hn := s.getHashed(cur.Index())
|
||||
parentNode := s.getInternal(parentIdx)
|
||||
path := makeKeyPath(int(parentNode.depth), stem)
|
||||
path, err := keyToPath(int(parentNode.depth), stem)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getSingle path error: %w", err)
|
||||
}
|
||||
data, err := resolver(path, hn.Hash())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getSingle resolve error: %w", err)
|
||||
|
|
@ -142,7 +145,10 @@ func (s *NodeStore) getValuesAtStem(ref NodeRef, stem []byte, resolver NodeResol
|
|||
}
|
||||
hn := s.getHashed(cur.Index())
|
||||
parentNode := s.getInternal(parentIdx)
|
||||
path := makeKeyPath(int(parentNode.depth), stem)
|
||||
path, err := keyToPath(int(parentNode.depth), stem)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getValuesAtStem path error: %w", err)
|
||||
}
|
||||
data, err := resolver(path, hn.Hash())
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("getValuesAtStem resolve error: %w", err)
|
||||
|
|
@ -250,7 +256,10 @@ func (s *NodeStore) insertSingleInternal(stem []byte, suffix byte, value []byte,
|
|||
p := pathStack[pathLen-1]
|
||||
parentNode := s.getInternal(p.internalIdx)
|
||||
hn := s.getHashed(cur.Index())
|
||||
path := makeKeyPath(int(parentNode.depth), stem)
|
||||
path, err := keyToPath(int(parentNode.depth), stem)
|
||||
if err != nil {
|
||||
return fmt.Errorf("insertSingle path error: %w", err)
|
||||
}
|
||||
data, err := resolver(path, hn.Hash())
|
||||
if err != nil {
|
||||
return fmt.Errorf("insertSingle resolve error: %w", err)
|
||||
|
|
@ -369,7 +378,10 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte
|
|||
return ref, errors.New("insertValuesAtStem: cannot resolve hashed node without resolver")
|
||||
}
|
||||
hn := s.getHashed(node.left.Index())
|
||||
path := makeKeyPath(int(node.depth), stem)
|
||||
path, err := keyToPath(int(node.depth), stem)
|
||||
if err != nil {
|
||||
return ref, fmt.Errorf("InsertValuesAtStem path error: %w", err)
|
||||
}
|
||||
data, err := resolver(path, hn.Hash())
|
||||
if err != nil {
|
||||
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
|
||||
|
|
@ -392,7 +404,10 @@ func (s *NodeStore) insertValuesAtStem(ref NodeRef, stem []byte, values [][]byte
|
|||
return ref, errors.New("insertValuesAtStem: cannot resolve hashed node without resolver")
|
||||
}
|
||||
hn := s.getHashed(node.right.Index())
|
||||
path := makeKeyPath(int(node.depth), stem)
|
||||
path, err := keyToPath(int(node.depth), stem)
|
||||
if err != nil {
|
||||
return ref, fmt.Errorf("InsertValuesAtStem path error: %w", err)
|
||||
}
|
||||
data, err := resolver(path, hn.Hash())
|
||||
if err != nil {
|
||||
return ref, fmt.Errorf("InsertValuesAtStem resolve error: %w", err)
|
||||
|
|
|
|||
Loading…
Reference in a new issue