diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -556,7 +556,8 @@ // mergedTx will end up with all the signatures; it // starts as a clone of the raw tx: CMutableTransaction mergedTx{tx}; - const CTransaction txv{tx}; + const CMutableTransaction txv{tx}; + CCoinsView viewDummy; CCoinsViewCache view(&viewDummy); diff --git a/src/primitives/transaction.h b/src/primitives/transaction.h --- a/src/primitives/transaction.h +++ b/src/primitives/transaction.h @@ -304,7 +304,7 @@ uint32_t nLockTime; CMutableTransaction(); - CMutableTransaction(const CTransaction &tx); + explicit CMutableTransaction(const CTransaction &tx); template inline void Serialize(Stream &s) const { SerializeTransaction(*this, s); diff --git a/src/test/coins_tests.cpp b/src/test/coins_tests.cpp --- a/src/test/coins_tests.cpp +++ b/src/test/coins_tests.cpp @@ -318,8 +318,8 @@ if (InsecureRandRange(10) == 0 && coinbase_coins.size()) { auto utxod = FindRandomFrom(coinbase_coins); // Reuse the exact same coinbase - tx = std::get<0>(utxod->second); - // shouldn't be available for reconnection if its been + tx = CMutableTransaction{std::get<0>(utxod->second)}; + // shouldn't be available for reconnection if it's been // duplicated disconnected_coins.erase(utxod->first); @@ -337,7 +337,7 @@ // 1/20 times reconnect a previously disconnected tx if (randiter % 20 == 2 && disconnected_coins.size()) { auto utxod = FindRandomFrom(disconnected_coins); - tx = std::get<0>(utxod->second); + tx = CMutableTransaction{std::get<0>(utxod->second)}; prevout = tx.vin[0].prevout; if (!CTransaction(tx).IsCoinBase() && !utxoset.count(prevout)) { diff --git a/src/test/script_tests.cpp b/src/test/script_tests.cpp --- a/src/test/script_tests.cpp +++ b/src/test/script_tests.cpp @@ -135,7 +135,7 @@ static CMutableTransaction BuildSpendingTransaction(const CScript &scriptSig, - const CMutableTransaction &txCredit) { + const CTransaction &txCredit) { CMutableTransaction txSpend; txSpend.nVersion = 1; txSpend.nLockTime = 0; @@ -159,8 +159,8 @@ } ScriptError err; - CMutableTransaction txCredit = - BuildCreditingTransaction(scriptPubKey, nValue); + const CTransaction txCredit{ + BuildCreditingTransaction(scriptPubKey, nValue)}; CMutableTransaction tx = BuildSpendingTransaction(scriptSig, txCredit); CMutableTransaction tx2 = tx; BOOST_CHECK_MESSAGE(VerifyScript(scriptSig, scriptPubKey, flags, @@ -2593,8 +2593,8 @@ << ToByteVector(key2.GetPubKey()) << OP_2 << OP_CHECKMULTISIG; - CMutableTransaction txFrom12 = - BuildCreditingTransaction(scriptPubKey12, Amount::zero()); + const CTransaction txFrom12{ + BuildCreditingTransaction(scriptPubKey12, Amount::zero())}; CMutableTransaction txTo12 = BuildSpendingTransaction(CScript(), txFrom12); CScript goodsig1 = @@ -2641,8 +2641,8 @@ << ToByteVector(key3.GetPubKey()) << OP_3 << OP_CHECKMULTISIG; - CMutableTransaction txFrom23 = - BuildCreditingTransaction(scriptPubKey23, Amount::zero()); + const CTransaction txFrom23{ + BuildCreditingTransaction(scriptPubKey23, Amount::zero())}; CMutableTransaction mutableTxTo23 = BuildSpendingTransaction(CScript(), txFrom23); @@ -2757,7 +2757,8 @@ CMutableTransaction txFrom = BuildCreditingTransaction( GetScriptForDestination(keys[0].GetPubKey().GetID()), Amount::zero()); - CMutableTransaction txTo = BuildSpendingTransaction(CScript(), txFrom); + CMutableTransaction txTo = + BuildSpendingTransaction(CScript(), CTransaction(txFrom)); CScript &scriptPubKey = txFrom.vout[0].scriptPubKey; CScript &scriptSig = txTo.vin[0].scriptSig; diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2170,8 +2170,8 @@ } bool CWalletTx::IsEquivalentTo(const CWalletTx &_tx) const { - CMutableTransaction tx1 = *this->tx; - CMutableTransaction tx2 = *_tx.tx; + CMutableTransaction tx1{*this->tx}; + CMutableTransaction tx2{*_tx.tx}; for (CTxIn &in : tx1.vin) { in.scriptSig = CScript(); }