aboutsummaryrefslogtreecommitdiffstats
path: root/dex
diff options
context:
space:
mode:
authorBojie Wu <bojie@dexon.org>2018-10-09 13:28:45 +0800
committerWei-Ning Huang <w@dexon.org>2019-03-12 12:19:09 +0800
commit07c599fec712ff4af9725bcd0db1a55bcb81bea1 (patch)
treee2e2017a4c3c69ec73074e6e6a94aa7fd0b0b920 /dex
parente350f522e42081e266779d1d6c8d255a120002c4 (diff)
downloaddexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.tar
dexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.tar.gz
dexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.tar.bz2
dexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.tar.lz
dexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.tar.xz
dexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.tar.zst
dexon-07c599fec712ff4af9725bcd0db1a55bcb81bea1.zip
app: fix nil pointer issue
Diffstat (limited to 'dex')
-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