diff options
author | Bojie Wu <bojie@dexon.org> | 2018-10-09 13:28:45 +0800 |
---|---|---|
committer | Wei-Ning Huang <w@dexon.org> | 2019-04-09 21:32:52 +0800 |
commit | b109172d0141c704f90e0272dcab806791c4580b (patch) | |
tree | ac2462b556502a13c03915fa6b40159c961430a9 | |
parent | 1b0f418c085bc1b4d972845f16a97b2eebc7ce42 (diff) | |
download | go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.tar go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.tar.gz go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.tar.bz2 go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.tar.lz go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.tar.xz go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.tar.zst go-tangerine-b109172d0141c704f90e0272dcab806791c4580b.zip |
app: fix nil pointer issue
-rw-r--r-- | dex/app.go | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/dex/app.go b/dex/app.go index 7730ba22f..b924ab620 100644 --- a/dex/app.go +++ b/dex/app.go @@ -129,14 +129,15 @@ func (d *DexconApp) PreparePayload(position coreTypes.Position) (payload []byte, // set state to the pending height var latestState *state.StateDB - if d.lastPendingHeight == 0 { + lastPendingBlock := d.blockchain.GetPendingBlockByHeight(d.lastPendingHeight) + if d.lastPendingHeight == 0 || lastPendingBlock == nil { latestState, err = d.blockchain.State() if err != nil { log.Error("Get current state", "error", err) return nil, fmt.Errorf("get current state error %v", err) } } else { - latestState, err = d.blockchain.StateAt(d.blockchain.GetPendingBlockByHeight(d.lastPendingHeight).Root()) + latestState, err = d.blockchain.StateAt(lastPendingBlock.Root()) if err != nil { log.Error("Get pending state", "error", err) return nil, fmt.Errorf("get pending state error: %v", err) @@ -286,14 +287,15 @@ func (d *DexconApp) VerifyBlock(block *coreTypes.Block) coreTypes.BlockVerifySta // set state to the pending height var latestState *state.StateDB - if d.lastPendingHeight == 0 { + lastPendingBlock := d.blockchain.GetPendingBlockByHeight(d.lastPendingHeight) + if d.lastPendingHeight == 0 || lastPendingBlock == nil { latestState, err = d.blockchain.State() if err != nil { log.Error("Get current state", "error", err) return coreTypes.VerifyInvalidBlock } } else { - latestState, err = d.blockchain.StateAt(d.blockchain.GetPendingBlockByHeight(d.lastPendingHeight).Root()) + latestState, err = d.blockchain.StateAt(lastPendingBlock.Root()) if err != nil { log.Error("Get pending state", "error", err) return coreTypes.VerifyInvalidBlock |