This commit is contained in:
allen 2025-09-28 09:39:10 -04:00
parent 15f6d24a9b
commit 0d72bdf614

View file

@ -19,6 +19,7 @@ package trie
import ( import (
"errors" "errors"
"fmt" "fmt"
"slices"
"sync" "sync"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
@ -551,12 +552,9 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) {
if hasTerm(key) { if hasTerm(key) {
key = key[:len(key)-1] key = key[:len(key)-1]
} }
path := make([]byte, len(req.path)+len(key))
copy(path, req.path)
copy(path[len(req.path):], key)
children = []childNode{{ children = []childNode{{
node: node.Val, node: node.Val,
path: path, path: slices.Concat(req.path, key),
}} }}
// Mark all internal nodes between shortNode and its **in disk** // Mark all internal nodes between shortNode and its **in disk**
// child as invalid. This is essential in the case of path mode // child as invalid. This is essential in the case of path mode
@ -596,12 +594,9 @@ func (s *Sync) children(req *nodeRequest, object node) ([]*nodeRequest, error) {
case *fullNode: case *fullNode:
for i := 0; i < 17; i++ { for i := 0; i < 17; i++ {
if node.Children[i] != nil { if node.Children[i] != nil {
path := make([]byte, len(req.path)+1)
copy(path, req.path)
path[len(req.path)] = byte(i)
children = append(children, childNode{ children = append(children, childNode{
node: node.Children[i], node: node.Children[i],
path: path, path: append(slices.Clone(req.path), byte(i)),
}) })
} }
} }