mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 21:56:43 +00:00
core/filtermaps: add extra checks to avoid silent errors
This commit is contained in:
parent
219e48390f
commit
468b3ef759
1 changed files with 13 additions and 4 deletions
|
|
@ -55,7 +55,9 @@ func NewChainView(chain blockchain, number uint64, hash common.Hash) *ChainView
|
||||||
headNumber: number,
|
headNumber: number,
|
||||||
hashes: []common.Hash{hash},
|
hashes: []common.Hash{hash},
|
||||||
}
|
}
|
||||||
cv.extendNonCanonical()
|
if !cv.extendNonCanonical() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return cv
|
return cv
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -129,7 +131,11 @@ func (cv *ChainView) SharedRange(cv2 *ChainView) common.Range[uint64] {
|
||||||
return common.Range[uint64]{}
|
return common.Range[uint64]{}
|
||||||
}
|
}
|
||||||
var sharedLen uint64
|
var sharedLen uint64
|
||||||
for n := min(cv.headNumber+1-uint64(len(cv.hashes)), cv2.headNumber+1-uint64(len(cv2.hashes))); n <= cv.headNumber && n <= cv2.headNumber && cv.blockHash(n) == cv2.blockHash(n); n++ {
|
for n := min(cv.headNumber+1-uint64(len(cv.hashes)), cv2.headNumber+1-uint64(len(cv2.hashes))); n <= cv.headNumber && n <= cv2.headNumber; n++ {
|
||||||
|
h1, h2 := cv.blockHash(n), cv2.blockHash(n)
|
||||||
|
if h1 != h2 || h1 == (common.Hash{}) {
|
||||||
|
break
|
||||||
|
}
|
||||||
sharedLen = n + 1
|
sharedLen = n + 1
|
||||||
}
|
}
|
||||||
return common.NewRange(0, sharedLen)
|
return common.NewRange(0, sharedLen)
|
||||||
|
|
@ -153,10 +159,13 @@ func matchViews(cv1, cv2 *ChainView, number uint64) bool {
|
||||||
if cv1.headNumber < number || cv2.headNumber < number {
|
if cv1.headNumber < number || cv2.headNumber < number {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
var h1, h2 common.Hash
|
||||||
if number == cv1.headNumber || number == cv2.headNumber {
|
if number == cv1.headNumber || number == cv2.headNumber {
|
||||||
return cv1.BlockId(number) == cv2.BlockId(number)
|
h1, h2 = cv1.BlockId(number), cv2.BlockId(number)
|
||||||
|
} else {
|
||||||
|
h1, h2 = cv1.BlockHash(number), cv2.BlockHash(number)
|
||||||
}
|
}
|
||||||
return cv1.BlockHash(number) == cv2.BlockHash(number)
|
return h1 == h2 && h1 != common.Hash{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// extendNonCanonical checks whether the previously known reverse list of head
|
// extendNonCanonical checks whether the previously known reverse list of head
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue