[#19212] handle cases where add or rem could be nil

This commit is contained in:
Jeff Wentworth 2019-03-06 11:05:07 +09:00
parent 6638e4625b
commit 472a66bb12

View file

@ -392,6 +392,18 @@ func (pool *TxPool) reset(oldHead, newHead *types.Header) {
rem = pool.chain.GetBlock(oldHead.Hash(), oldHead.Number.Uint64()) rem = pool.chain.GetBlock(oldHead.Hash(), oldHead.Number.Uint64())
add = pool.chain.GetBlock(newHead.Hash(), newHead.Number.Uint64()) add = pool.chain.GetBlock(newHead.Hash(), newHead.Number.Uint64())
) )
// handle cases where rem or add could come up nil
if rem == nil && add == nil {
return
} else if rem != nil && add == nil {
discarded = append(discarded, rem.Transactions()...)
return
} else if rem == nil && add != nil {
included = append(included, add.Transactions()...)
return
}
for rem.NumberU64() > add.NumberU64() { for rem.NumberU64() > add.NumberU64() {
discarded = append(discarded, rem.Transactions()...) discarded = append(discarded, rem.Transactions()...)
if rem = pool.chain.GetBlock(rem.ParentHash(), rem.NumberU64()-1); rem == nil { if rem = pool.chain.GetBlock(rem.ParentHash(), rem.NumberU64()-1); rem == nil {