@@ -184,19 +184,21 @@ func (miner *Miner) SetRecommitInterval(interval time.Duration) {
184184// Pending returns the currently pending block and associated state.
185185func (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
207209func (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
216220func (miner * Miner ) SetEtherbase (addr common.Address ) {
0 commit comments