Skip to content

Commit 6fcce0d

Browse files
authored
fix pending block null issue (bnb-chain#358)
1 parent 955c78b commit 6fcce0d

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

miner/miner.go

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -184,19 +184,21 @@ func (miner *Miner) SetRecommitInterval(interval time.Duration) {
184184
// Pending returns the currently pending block and associated state.
185185
func (miner *Miner) Pending() (*types.Block, *state.StateDB) {
186186
if miner.worker.isRunning() {
187-
return miner.worker.pending()
188-
} else {
189-
// fallback to latest block
190-
block := miner.worker.chain.CurrentBlock()
191-
if block == nil {
192-
return nil, nil
187+
pendingBlock, pendingState := miner.worker.pending()
188+
if pendingState != nil && pendingBlock != nil {
189+
return pendingBlock, pendingState
193190
}
194-
stateDb, err := miner.worker.chain.StateAt(block.Root())
195-
if err != nil {
196-
return nil, nil
197-
}
198-
return block, stateDb
199191
}
192+
// fallback to latest block
193+
block := miner.worker.chain.CurrentBlock()
194+
if block == nil {
195+
return nil, nil
196+
}
197+
stateDb, err := miner.worker.chain.StateAt(block.Root())
198+
if err != nil {
199+
return nil, nil
200+
}
201+
return block, stateDb
200202
}
201203

202204
// PendingBlock returns the currently pending block.
@@ -206,11 +208,13 @@ func (miner *Miner) Pending() (*types.Block, *state.StateDB) {
206208
// change between multiple method calls
207209
func (miner *Miner) PendingBlock() *types.Block {
208210
if miner.worker.isRunning() {
209-
return miner.worker.pendingBlock()
210-
} else {
211-
// fallback to latest block
212-
return miner.worker.chain.CurrentBlock()
211+
pendingBlock := miner.worker.pendingBlock()
212+
if pendingBlock != nil {
213+
return pendingBlock
214+
}
213215
}
216+
// fallback to latest block
217+
return miner.worker.chain.CurrentBlock()
214218
}
215219

216220
func (miner *Miner) SetEtherbase(addr common.Address) {

0 commit comments

Comments
 (0)