Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion core/rawdb/accessors_chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"bytes"
"encoding/binary"
"fmt"
"math"
"math/big"
"slices"

Expand Down Expand Up @@ -87,10 +88,21 @@ type NumberHash struct {
// heights, both canonical and reorged forks included.
// This method considers both limits to be _inclusive_.
func ReadAllHashesInRange(db ethdb.Iteratee, first, last uint64) []*NumberHash {
// Return empty result for inverted ranges
if last < first {
return nil
}
rangeLen := last - first
var capHint int
if rangeLen >= uint64(math.MaxInt) {
capHint = math.MaxInt
} else {
capHint = int(rangeLen) + 1
}
var (
start = encodeBlockNumber(first)
keyLength = len(headerPrefix) + 8 + 32
hashes = make([]*NumberHash, 0, 1+last-first)
hashes = make([]*NumberHash, 0, capHint)
it = db.NewIterator(headerPrefix, start)
)
defer it.Release()
Expand Down