aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBojie Wu <bojie@dexon.org>2018-10-09 13:28:45 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:52 +0800
commitb109172d0141c704f90e0272dcab806791c4580b (patch)
treeac2462b556502a13c03915fa6b40159c961430a9
parent1b0f418c085bc1b4d972845f16a97b2eebc7ce42 (diff)
downloaddexon-b109172d0141c704f90e0272dcab806791c4580b.tar.gz
dexon-b109172d0141c704f90e0272dcab806791c4580b.tar.zst
dexon-b109172d0141c704f90e0272dcab806791c4580b.zip
app: fix nil pointer issue
-rw-r--r--dex/app.go10
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