From 804debede41a5aaaae65f4f36ced1044d37cbba4 Mon Sep 17 00:00:00 2001 From: Tuna Date: Wed, 9 Jan 2019 15:43:12 +0700 Subject: [PATCH] fix nil exception --- consensus/posv/posv.go | 2 +- miner/worker.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index b86028cce0..c92371c846 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -774,7 +774,7 @@ func (c *Posv) Prepare(chain consensus.ChainReader, state *state.StateDB, header } header.Extra = header.Extra[:extraVanity] masternodes := snap.GetSigners() - if number > 0 && number%c.config.Epoch == 0 { + if number >= c.config.Epoch && number%c.config.Epoch == 0 { if c.HookPenalty != nil { penMasternodes, err := c.HookPenalty(state, chain, number) if err != nil { diff --git a/miner/worker.go b/miner/worker.go index 41103c87af..809a132777 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -552,7 +552,11 @@ func (self *worker) commitNewWork() { if atomic.LoadInt32(&self.mining) == 1 { header.Coinbase = self.coinbase } - if err := self.engine.Prepare(self.chain, self.current.state, header); err != nil { + state := &state.StateDB{} + if self.current != nil { + state = self.current.state + } + if err := self.engine.Prepare(self.chain, state, header); err != nil { log.Error("Failed to prepare header for new block", "err", err) return }