From ae200edae57d15089e5b661d2605fc0332fb927b Mon Sep 17 00:00:00 2001 From: barrystyle Date: Sat, 27 Apr 2019 21:02:49 +0800 Subject: [PATCH] prevent potential segfault if no mnwinner retrieved --- src/rpcmining.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/rpcmining.cpp b/src/rpcmining.cpp index 5675e366..66d993d4 100644 --- a/src/rpcmining.cpp +++ b/src/rpcmining.cpp @@ -690,15 +690,17 @@ Value getblocktemplate(const Array& params, bool fHelp) // Include Masternode payments CAmount masternodeSplit = masternodePayment; CMasternode* winningNode = mnodeman.GetCurrentMasterNode(1); - CScript payee = GetScriptForDestination(winningNode->pubkey.GetID()); - - CTxDestination address1; - ExtractDestination(payee, address1); - CBitcoinAddress address2(address1); - result.push_back(Pair("payee", address2.ToString().c_str())); - result.push_back(Pair("payee_amount", (int64_t)masternodeSplit)); - result.push_back(Pair("masternode_payments", true)); - result.push_back(Pair("enforce_masternode_payments", true)); + + if (winningNode) { + CScript payee = GetScriptForDestination(winningNode->pubkey.GetID()); + CTxDestination address1; + ExtractDestination(payee, address1); + CBitcoinAddress address2(address1); + result.push_back(Pair("payee", address2.ToString().c_str())); + result.push_back(Pair("payee_amount", (int64_t)masternodeSplit)); + result.push_back(Pair("masternode_payments", true)); + result.push_back(Pair("enforce_masternode_payments", true)); + } } }