Merge #13249: Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations.
f34c8c466a
Make objects in range declarations immutable by default. Avoid unnecessary copying of objects in range declarations. (practicalswift)
Pull request description:
Make objects in range declarations immutable by default.
Rationale:
* Immutable objects are easier to reason about.
* Prevents accidental or hard-to-notice change of value.
Tree-SHA512: cad69d35f0cf8a938b848e65dd537c621d96fe3369be306b65ef0cd1baf6cc0a9f28bc230e1e383d810c555a6743d08cb6b2b0bd51856d4611f537a12e5abb8b
This commit is contained in:
commit
5c24d3b98c
36 changed files with 77 additions and 77 deletions
|
@ -62,7 +62,7 @@ uint32_t PolyMod(const data& v)
|
||||||
// v, it corresponds to x^2 + v0*x + v1 mod g(x). As 1 mod g(x) = 1, that is the starting value
|
// v, it corresponds to x^2 + v0*x + v1 mod g(x). As 1 mod g(x) = 1, that is the starting value
|
||||||
// for `c`.
|
// for `c`.
|
||||||
uint32_t c = 1;
|
uint32_t c = 1;
|
||||||
for (auto v_i : v) {
|
for (const auto v_i : v) {
|
||||||
// We want to update `c` to correspond to a polynomial with one extra term. If the initial
|
// We want to update `c` to correspond to a polynomial with one extra term. If the initial
|
||||||
// value of `c` consists of the coefficients of c(x) = f(x) mod g(x), we modify it to
|
// value of `c` consists of the coefficients of c(x) = f(x) mod g(x), we modify it to
|
||||||
// correspond to c'(x) = (f(x) * x + v_i) mod g(x), where v_i is the next input to
|
// correspond to c'(x) = (f(x) * x + v_i) mod g(x), where v_i is the next input to
|
||||||
|
@ -149,7 +149,7 @@ std::string Encode(const std::string& hrp, const data& values) {
|
||||||
data combined = Cat(values, checksum);
|
data combined = Cat(values, checksum);
|
||||||
std::string ret = hrp + '1';
|
std::string ret = hrp + '1';
|
||||||
ret.reserve(ret.size() + combined.size());
|
ret.reserve(ret.size() + combined.size());
|
||||||
for (auto c : combined) {
|
for (const auto c : combined) {
|
||||||
ret += CHARSET[c];
|
ret += CHARSET[c];
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -385,7 +385,7 @@ static void MutateTxAddOutMultiSig(CMutableTransaction& tx, const std::string& s
|
||||||
CScript scriptPubKey = GetScriptForMultisig(required, pubkeys);
|
CScript scriptPubKey = GetScriptForMultisig(required, pubkeys);
|
||||||
|
|
||||||
if (bSegWit) {
|
if (bSegWit) {
|
||||||
for (CPubKey& pubkey : pubkeys) {
|
for (const CPubKey& pubkey : pubkeys) {
|
||||||
if (!pubkey.IsCompressed()) {
|
if (!pubkey.IsCompressed()) {
|
||||||
throw std::runtime_error("Uncompressed pubkeys are not useable for SegWit outputs");
|
throw std::runtime_error("Uncompressed pubkeys are not useable for SegWit outputs");
|
||||||
}
|
}
|
||||||
|
|
|
@ -397,7 +397,7 @@ public:
|
||||||
std::array<uint32_t, 8> locs = compute_hashes(e);
|
std::array<uint32_t, 8> locs = compute_hashes(e);
|
||||||
// Make sure we have not already inserted this element
|
// Make sure we have not already inserted this element
|
||||||
// If we have, make sure that it does not get deleted
|
// If we have, make sure that it does not get deleted
|
||||||
for (uint32_t loc : locs)
|
for (const uint32_t loc : locs)
|
||||||
if (table[loc] == e) {
|
if (table[loc] == e) {
|
||||||
please_keep(loc);
|
please_keep(loc);
|
||||||
epoch_flags[loc] = last_epoch;
|
epoch_flags[loc] = last_epoch;
|
||||||
|
@ -405,7 +405,7 @@ public:
|
||||||
}
|
}
|
||||||
for (uint8_t depth = 0; depth < depth_limit; ++depth) {
|
for (uint8_t depth = 0; depth < depth_limit; ++depth) {
|
||||||
// First try to insert to an empty slot, if one exists
|
// First try to insert to an empty slot, if one exists
|
||||||
for (uint32_t loc : locs) {
|
for (const uint32_t loc : locs) {
|
||||||
if (!collection_flags.bit_is_set(loc))
|
if (!collection_flags.bit_is_set(loc))
|
||||||
continue;
|
continue;
|
||||||
table[loc] = std::move(e);
|
table[loc] = std::move(e);
|
||||||
|
@ -467,7 +467,7 @@ public:
|
||||||
inline bool contains(const Element& e, const bool erase) const
|
inline bool contains(const Element& e, const bool erase) const
|
||||||
{
|
{
|
||||||
std::array<uint32_t, 8> locs = compute_hashes(e);
|
std::array<uint32_t, 8> locs = compute_hashes(e);
|
||||||
for (uint32_t loc : locs)
|
for (const uint32_t loc : locs)
|
||||||
if (table[loc] == e) {
|
if (table[loc] == e) {
|
||||||
if (erase)
|
if (erase)
|
||||||
allow_erase(loc);
|
allow_erase(loc);
|
||||||
|
|
|
@ -344,7 +344,7 @@ CNode* CConnman::FindNode(const CService& addr)
|
||||||
bool CConnman::CheckIncomingNonce(uint64_t nonce)
|
bool CConnman::CheckIncomingNonce(uint64_t nonce)
|
||||||
{
|
{
|
||||||
LOCK(cs_vNodes);
|
LOCK(cs_vNodes);
|
||||||
for (CNode* pnode : vNodes) {
|
for (const CNode* pnode : vNodes) {
|
||||||
if (!pnode->fSuccessfullyConnected && !pnode->fInbound && pnode->GetLocalNonce() == nonce)
|
if (!pnode->fSuccessfullyConnected && !pnode->fInbound && pnode->GetLocalNonce() == nonce)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1614,7 +1614,7 @@ void CConnman::ThreadDNSAddressSeed()
|
||||||
|
|
||||||
LOCK(cs_vNodes);
|
LOCK(cs_vNodes);
|
||||||
int nRelevant = 0;
|
int nRelevant = 0;
|
||||||
for (auto pnode : vNodes) {
|
for (const CNode* pnode : vNodes) {
|
||||||
nRelevant += pnode->fSuccessfullyConnected && !pnode->fFeeler && !pnode->fOneShot && !pnode->m_manual_connection && !pnode->fInbound;
|
nRelevant += pnode->fSuccessfullyConnected && !pnode->fFeeler && !pnode->fOneShot && !pnode->m_manual_connection && !pnode->fInbound;
|
||||||
}
|
}
|
||||||
if (nRelevant >= 2) {
|
if (nRelevant >= 2) {
|
||||||
|
@ -1733,7 +1733,7 @@ int CConnman::GetExtraOutboundCount()
|
||||||
int nOutbound = 0;
|
int nOutbound = 0;
|
||||||
{
|
{
|
||||||
LOCK(cs_vNodes);
|
LOCK(cs_vNodes);
|
||||||
for (CNode* pnode : vNodes) {
|
for (const CNode* pnode : vNodes) {
|
||||||
if (!pnode->fInbound && !pnode->m_manual_connection && !pnode->fFeeler && !pnode->fDisconnect && !pnode->fOneShot && pnode->fSuccessfullyConnected) {
|
if (!pnode->fInbound && !pnode->m_manual_connection && !pnode->fFeeler && !pnode->fDisconnect && !pnode->fOneShot && pnode->fSuccessfullyConnected) {
|
||||||
++nOutbound;
|
++nOutbound;
|
||||||
}
|
}
|
||||||
|
@ -1803,7 +1803,7 @@ void CConnman::ThreadOpenConnections(const std::vector<std::string> connect)
|
||||||
std::set<std::vector<unsigned char> > setConnected;
|
std::set<std::vector<unsigned char> > setConnected;
|
||||||
{
|
{
|
||||||
LOCK(cs_vNodes);
|
LOCK(cs_vNodes);
|
||||||
for (CNode* pnode : vNodes) {
|
for (const CNode* pnode : vNodes) {
|
||||||
if (!pnode->fInbound && !pnode->m_manual_connection) {
|
if (!pnode->fInbound && !pnode->m_manual_connection) {
|
||||||
// Netgroups for inbound and addnode peers are not excluded because our goal here
|
// Netgroups for inbound and addnode peers are not excluded because our goal here
|
||||||
// is to not use multiple of our limited outbound slots on a single netgroup
|
// is to not use multiple of our limited outbound slots on a single netgroup
|
||||||
|
|
|
@ -882,7 +882,7 @@ void PeerLogicValidation::BlockConnected(const std::shared_ptr<const CBlock>& pb
|
||||||
// Erase orphan transactions included or precluded by this block
|
// Erase orphan transactions included or precluded by this block
|
||||||
if (vOrphanErase.size()) {
|
if (vOrphanErase.size()) {
|
||||||
int nErased = 0;
|
int nErased = 0;
|
||||||
for (uint256 &orphanHash : vOrphanErase) {
|
for (const uint256& orphanHash : vOrphanErase) {
|
||||||
nErased += EraseOrphanTx(orphanHash);
|
nErased += EraseOrphanTx(orphanHash);
|
||||||
}
|
}
|
||||||
LogPrint(BCLog::MEMPOOL, "Erased %d orphan tx included or conflicted by block\n", nErased);
|
LogPrint(BCLog::MEMPOOL, "Erased %d orphan tx included or conflicted by block\n", nErased);
|
||||||
|
@ -2288,7 +2288,7 @@ bool static ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStr
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint256 hash : vEraseQueue)
|
for (const uint256& hash : vEraseQueue)
|
||||||
EraseOrphanTx(hash);
|
EraseOrphanTx(hash);
|
||||||
}
|
}
|
||||||
else if (fMissingInputs)
|
else if (fMissingInputs)
|
||||||
|
|
|
@ -416,7 +416,7 @@ void BitcoinApplication::requestShutdown()
|
||||||
|
|
||||||
#ifdef ENABLE_WALLET
|
#ifdef ENABLE_WALLET
|
||||||
window->removeAllWallets();
|
window->removeAllWallets();
|
||||||
for (WalletModel *walletModel : m_wallet_models) {
|
for (const WalletModel* walletModel : m_wallet_models) {
|
||||||
delete walletModel;
|
delete walletModel;
|
||||||
}
|
}
|
||||||
m_wallet_models.clear();
|
m_wallet_models.clear();
|
||||||
|
|
|
@ -1276,7 +1276,7 @@ void UnitDisplayStatusBarControl::mousePressEvent(QMouseEvent *event)
|
||||||
void UnitDisplayStatusBarControl::createContextMenu()
|
void UnitDisplayStatusBarControl::createContextMenu()
|
||||||
{
|
{
|
||||||
menu = new QMenu(this);
|
menu = new QMenu(this);
|
||||||
for (BitcoinUnits::Unit u : BitcoinUnits::availableUnits())
|
for (const BitcoinUnits::Unit u : BitcoinUnits::availableUnits())
|
||||||
{
|
{
|
||||||
QAction *menuAction = new QAction(QString(BitcoinUnits::longName(u)), this);
|
QAction *menuAction = new QAction(QString(BitcoinUnits::longName(u)), this);
|
||||||
menuAction->setData(QVariant(u));
|
menuAction->setData(QVariant(u));
|
||||||
|
|
|
@ -65,7 +65,7 @@ public:
|
||||||
interfaces::Node::NodesStats nodes_stats;
|
interfaces::Node::NodesStats nodes_stats;
|
||||||
node.getNodesStats(nodes_stats);
|
node.getNodesStats(nodes_stats);
|
||||||
cachedNodeStats.reserve(nodes_stats.size());
|
cachedNodeStats.reserve(nodes_stats.size());
|
||||||
for (auto& node_stats : nodes_stats)
|
for (const auto& node_stats : nodes_stats)
|
||||||
{
|
{
|
||||||
CNodeCombinedStats stats;
|
CNodeCombinedStats stats;
|
||||||
stats.nodeStats = std::get<0>(node_stats);
|
stats.nodeStats = std::get<0>(node_stats);
|
||||||
|
|
|
@ -348,7 +348,7 @@ void SendCoinsDialog::on_sendButton_clicked()
|
||||||
questionString.append("<hr />");
|
questionString.append("<hr />");
|
||||||
CAmount totalAmount = currentTransaction.getTotalTransactionAmount() + txFee;
|
CAmount totalAmount = currentTransaction.getTotalTransactionAmount() + txFee;
|
||||||
QStringList alternativeUnits;
|
QStringList alternativeUnits;
|
||||||
for (BitcoinUnits::Unit u : BitcoinUnits::availableUnits())
|
for (const BitcoinUnits::Unit u : BitcoinUnits::availableUnits())
|
||||||
{
|
{
|
||||||
if(u != model->getOptionsModel()->getDisplayUnit())
|
if(u != model->getOptionsModel()->getDisplayUnit())
|
||||||
alternativeUnits.append(BitcoinUnits::formatHtmlWithUnit(u, totalAmount));
|
alternativeUnits.append(BitcoinUnits::formatHtmlWithUnit(u, totalAmount));
|
||||||
|
|
|
@ -200,7 +200,7 @@ void SplashScreen::unsubscribeFromCoreSignals()
|
||||||
// Disconnect signals from client
|
// Disconnect signals from client
|
||||||
m_handler_init_message->disconnect();
|
m_handler_init_message->disconnect();
|
||||||
m_handler_show_progress->disconnect();
|
m_handler_show_progress->disconnect();
|
||||||
for (auto& handler : m_connected_wallet_handlers) {
|
for (const auto& handler : m_connected_wallet_handlers) {
|
||||||
handler->disconnect();
|
handler->disconnect();
|
||||||
}
|
}
|
||||||
m_connected_wallet_handlers.clear();
|
m_connected_wallet_handlers.clear();
|
||||||
|
|
|
@ -141,10 +141,10 @@ void TrafficGraphWidget::updateRates()
|
||||||
}
|
}
|
||||||
|
|
||||||
float tmax = 0.0f;
|
float tmax = 0.0f;
|
||||||
for (float f : vSamplesIn) {
|
for (const float f : vSamplesIn) {
|
||||||
if(f > tmax) tmax = f;
|
if(f > tmax) tmax = f;
|
||||||
}
|
}
|
||||||
for (float f : vSamplesOut) {
|
for (const float f : vSamplesOut) {
|
||||||
if(f > tmax) tmax = f;
|
if(f > tmax) tmax = f;
|
||||||
}
|
}
|
||||||
fMax = tmax;
|
fMax = tmax;
|
||||||
|
|
|
@ -152,13 +152,13 @@ QString TransactionDesc::toHTML(interfaces::Node& node, interfaces::Wallet& wall
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
isminetype fAllFromMe = ISMINE_SPENDABLE;
|
isminetype fAllFromMe = ISMINE_SPENDABLE;
|
||||||
for (isminetype mine : wtx.txin_is_mine)
|
for (const isminetype mine : wtx.txin_is_mine)
|
||||||
{
|
{
|
||||||
if(fAllFromMe > mine) fAllFromMe = mine;
|
if(fAllFromMe > mine) fAllFromMe = mine;
|
||||||
}
|
}
|
||||||
|
|
||||||
isminetype fAllToMe = ISMINE_SPENDABLE;
|
isminetype fAllToMe = ISMINE_SPENDABLE;
|
||||||
for (isminetype mine : wtx.txout_is_mine)
|
for (const isminetype mine : wtx.txout_is_mine)
|
||||||
{
|
{
|
||||||
if(fAllToMe > mine) fAllToMe = mine;
|
if(fAllToMe > mine) fAllToMe = mine;
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,14 +77,14 @@ QList<TransactionRecord> TransactionRecord::decomposeTransaction(const interface
|
||||||
{
|
{
|
||||||
bool involvesWatchAddress = false;
|
bool involvesWatchAddress = false;
|
||||||
isminetype fAllFromMe = ISMINE_SPENDABLE;
|
isminetype fAllFromMe = ISMINE_SPENDABLE;
|
||||||
for (isminetype mine : wtx.txin_is_mine)
|
for (const isminetype mine : wtx.txin_is_mine)
|
||||||
{
|
{
|
||||||
if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;
|
if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;
|
||||||
if(fAllFromMe > mine) fAllFromMe = mine;
|
if(fAllFromMe > mine) fAllFromMe = mine;
|
||||||
}
|
}
|
||||||
|
|
||||||
isminetype fAllToMe = ISMINE_SPENDABLE;
|
isminetype fAllToMe = ISMINE_SPENDABLE;
|
||||||
for (isminetype mine : wtx.txout_is_mine)
|
for (const isminetype mine : wtx.txout_is_mine)
|
||||||
{
|
{
|
||||||
if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;
|
if(mine & ISMINE_WATCH_ONLY) involvesWatchAddress = true;
|
||||||
if(fAllToMe > mine) fAllToMe = mine;
|
if(fAllToMe > mine) fAllToMe = mine;
|
||||||
|
|
|
@ -426,7 +426,7 @@ static void entryToJSON(UniValue &info, const CTxMemPoolEntry &e) EXCLUSIVE_LOCK
|
||||||
UniValue spent(UniValue::VARR);
|
UniValue spent(UniValue::VARR);
|
||||||
const CTxMemPool::txiter &it = mempool.mapTx.find(tx.GetHash());
|
const CTxMemPool::txiter &it = mempool.mapTx.find(tx.GetHash());
|
||||||
const CTxMemPool::setEntries &setChildren = mempool.GetMemPoolChildren(it);
|
const CTxMemPool::setEntries &setChildren = mempool.GetMemPoolChildren(it);
|
||||||
for (const CTxMemPool::txiter &childiter : setChildren) {
|
for (CTxMemPool::txiter childiter : setChildren) {
|
||||||
spent.push_back(childiter->GetTx().GetHash().ToString());
|
spent.push_back(childiter->GetTx().GetHash().ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -922,7 +922,7 @@ static UniValue estimaterawfee(const JSONRPCRequest& request)
|
||||||
|
|
||||||
UniValue result(UniValue::VOBJ);
|
UniValue result(UniValue::VOBJ);
|
||||||
|
|
||||||
for (FeeEstimateHorizon horizon : {FeeEstimateHorizon::SHORT_HALFLIFE, FeeEstimateHorizon::MED_HALFLIFE, FeeEstimateHorizon::LONG_HALFLIFE}) {
|
for (const FeeEstimateHorizon horizon : {FeeEstimateHorizon::SHORT_HALFLIFE, FeeEstimateHorizon::MED_HALFLIFE, FeeEstimateHorizon::LONG_HALFLIFE}) {
|
||||||
CFeeRate feeRate;
|
CFeeRate feeRate;
|
||||||
EstimationResult buckets;
|
EstimationResult buckets;
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,7 @@ static UniValue getpeerinfo(const JSONRPCRequest& request)
|
||||||
obj.pushKV("synced_headers", statestats.nSyncHeight);
|
obj.pushKV("synced_headers", statestats.nSyncHeight);
|
||||||
obj.pushKV("synced_blocks", statestats.nCommonHeight);
|
obj.pushKV("synced_blocks", statestats.nCommonHeight);
|
||||||
UniValue heights(UniValue::VARR);
|
UniValue heights(UniValue::VARR);
|
||||||
for (int height : statestats.vHeightInFlight) {
|
for (const int height : statestats.vHeightInFlight) {
|
||||||
heights.push_back(height);
|
heights.push_back(height);
|
||||||
}
|
}
|
||||||
obj.pushKV("inflight", heights);
|
obj.pushKV("inflight", heights);
|
||||||
|
|
|
@ -155,7 +155,7 @@ static void Correct_Queue_range(std::vector<size_t> range)
|
||||||
}
|
}
|
||||||
// Make vChecks here to save on malloc (this test can be slow...)
|
// Make vChecks here to save on malloc (this test can be slow...)
|
||||||
std::vector<FakeCheckCheckCompletion> vChecks;
|
std::vector<FakeCheckCheckCompletion> vChecks;
|
||||||
for (auto i : range) {
|
for (const size_t i : range) {
|
||||||
size_t total = i;
|
size_t total = i;
|
||||||
FakeCheckCheckCompletion::n_calls = 0;
|
FakeCheckCheckCompletion::n_calls = 0;
|
||||||
CCheckQueueControl<FakeCheckCheckCompletion> control(small_queue.get());
|
CCheckQueueControl<FakeCheckCheckCompletion> control(small_queue.get());
|
||||||
|
@ -253,7 +253,7 @@ BOOST_AUTO_TEST_CASE(test_CheckQueue_Recovers_From_Failure)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto times = 0; times < 10; ++times) {
|
for (auto times = 0; times < 10; ++times) {
|
||||||
for (bool end_fails : {true, false}) {
|
for (const bool end_fails : {true, false}) {
|
||||||
CCheckQueueControl<FailingCheck> control(fail_queue.get());
|
CCheckQueueControl<FailingCheck> control(fail_queue.get());
|
||||||
{
|
{
|
||||||
std::vector<FailingCheck> vChecks;
|
std::vector<FailingCheck> vChecks;
|
||||||
|
|
|
@ -736,7 +736,7 @@ static void CheckAddCoinBase(CAmount base_value, CAmount cache_value, CAmount mo
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
static void CheckAddCoin(Args&&... args)
|
static void CheckAddCoin(Args&&... args)
|
||||||
{
|
{
|
||||||
for (CAmount base_value : {ABSENT, PRUNED, VALUE1})
|
for (const CAmount base_value : {ABSENT, PRUNED, VALUE1})
|
||||||
CheckAddCoinBase(base_value, std::forward<Args>(args)...);
|
CheckAddCoinBase(base_value, std::forward<Args>(args)...);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -848,10 +848,10 @@ BOOST_AUTO_TEST_CASE(ccoins_write)
|
||||||
// they would be too repetitive (the parent cache is never updated in these
|
// they would be too repetitive (the parent cache is never updated in these
|
||||||
// cases). The loop below covers these cases and makes sure the parent cache
|
// cases). The loop below covers these cases and makes sure the parent cache
|
||||||
// is always left unchanged.
|
// is always left unchanged.
|
||||||
for (CAmount parent_value : {ABSENT, PRUNED, VALUE1})
|
for (const CAmount parent_value : {ABSENT, PRUNED, VALUE1})
|
||||||
for (CAmount child_value : {ABSENT, PRUNED, VALUE2})
|
for (const CAmount child_value : {ABSENT, PRUNED, VALUE2})
|
||||||
for (char parent_flags : parent_value == ABSENT ? ABSENT_FLAGS : FLAGS)
|
for (const char parent_flags : parent_value == ABSENT ? ABSENT_FLAGS : FLAGS)
|
||||||
for (char child_flags : child_value == ABSENT ? ABSENT_FLAGS : CLEAN_FLAGS)
|
for (const char child_flags : child_value == ABSENT ? ABSENT_FLAGS : CLEAN_FLAGS)
|
||||||
CheckWriteCoins(parent_value, child_value, parent_value, parent_flags, child_flags, parent_flags);
|
CheckWriteCoins(parent_value, child_value, parent_value, parent_flags, child_flags, parent_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,11 +82,11 @@ static double test_cache(size_t megabytes, double load)
|
||||||
*/
|
*/
|
||||||
std::vector<uint256> hashes_insert_copy = hashes;
|
std::vector<uint256> hashes_insert_copy = hashes;
|
||||||
/** Do the insert */
|
/** Do the insert */
|
||||||
for (uint256& h : hashes_insert_copy)
|
for (const uint256& h : hashes_insert_copy)
|
||||||
set.insert(h);
|
set.insert(h);
|
||||||
/** Count the hits */
|
/** Count the hits */
|
||||||
uint32_t count = 0;
|
uint32_t count = 0;
|
||||||
for (uint256& h : hashes)
|
for (const uint256& h : hashes)
|
||||||
count += set.contains(h, false);
|
count += set.contains(h, false);
|
||||||
double hit_rate = ((double)count) / ((double)n_insert);
|
double hit_rate = ((double)count) / ((double)n_insert);
|
||||||
return hit_rate;
|
return hit_rate;
|
||||||
|
@ -323,7 +323,7 @@ static void test_cache_generations()
|
||||||
reads.push_back(inserts[i]);
|
reads.push_back(inserts[i]);
|
||||||
for (uint32_t i = n_insert - (n_insert / 4); i < n_insert; ++i)
|
for (uint32_t i = n_insert - (n_insert / 4); i < n_insert; ++i)
|
||||||
reads.push_back(inserts[i]);
|
reads.push_back(inserts[i]);
|
||||||
for (auto h : inserts)
|
for (const auto& h : inserts)
|
||||||
c.insert(h);
|
c.insert(h);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,7 +26,7 @@ BOOST_FIXTURE_TEST_SUITE(dbwrapper_tests, BasicTestingSetup)
|
||||||
BOOST_AUTO_TEST_CASE(dbwrapper)
|
BOOST_AUTO_TEST_CASE(dbwrapper)
|
||||||
{
|
{
|
||||||
// Perform tests both obfuscated and non-obfuscated.
|
// Perform tests both obfuscated and non-obfuscated.
|
||||||
for (bool obfuscate : {false, true}) {
|
for (const bool obfuscate : {false, true}) {
|
||||||
fs::path ph = SetDataDir(std::string("dbwrapper").append(obfuscate ? "_true" : "_false"));
|
fs::path ph = SetDataDir(std::string("dbwrapper").append(obfuscate ? "_true" : "_false"));
|
||||||
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
|
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
|
||||||
char key = 'k';
|
char key = 'k';
|
||||||
|
@ -46,7 +46,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper)
|
||||||
BOOST_AUTO_TEST_CASE(dbwrapper_batch)
|
BOOST_AUTO_TEST_CASE(dbwrapper_batch)
|
||||||
{
|
{
|
||||||
// Perform tests both obfuscated and non-obfuscated.
|
// Perform tests both obfuscated and non-obfuscated.
|
||||||
for (bool obfuscate : {false, true}) {
|
for (const bool obfuscate : {false, true}) {
|
||||||
fs::path ph = SetDataDir(std::string("dbwrapper_batch").append(obfuscate ? "_true" : "_false"));
|
fs::path ph = SetDataDir(std::string("dbwrapper_batch").append(obfuscate ? "_true" : "_false"));
|
||||||
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
|
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper_batch)
|
||||||
BOOST_AUTO_TEST_CASE(dbwrapper_iterator)
|
BOOST_AUTO_TEST_CASE(dbwrapper_iterator)
|
||||||
{
|
{
|
||||||
// Perform tests both obfuscated and non-obfuscated.
|
// Perform tests both obfuscated and non-obfuscated.
|
||||||
for (bool obfuscate : {false, true}) {
|
for (const bool obfuscate : {false, true}) {
|
||||||
fs::path ph = SetDataDir(std::string("dbwrapper_iterator").append(obfuscate ? "_true" : "_false"));
|
fs::path ph = SetDataDir(std::string("dbwrapper_iterator").append(obfuscate ? "_true" : "_false"));
|
||||||
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
|
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ BOOST_AUTO_TEST_CASE(iterator_ordering)
|
||||||
if (x & 1) BOOST_CHECK(dbw.Write(key, value));
|
if (x & 1) BOOST_CHECK(dbw.Write(key, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int seek_start : {0x00, 0x80}) {
|
for (const int seek_start : {0x00, 0x80}) {
|
||||||
it->Seek((uint8_t)seek_start);
|
it->Seek((uint8_t)seek_start);
|
||||||
for (unsigned int x=seek_start; x<255; ++x) {
|
for (unsigned int x=seek_start; x<255; ++x) {
|
||||||
uint8_t key;
|
uint8_t key;
|
||||||
|
@ -291,7 +291,7 @@ BOOST_AUTO_TEST_CASE(iterator_string_ordering)
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<CDBIterator> it(const_cast<CDBWrapper&>(dbw).NewIterator());
|
std::unique_ptr<CDBIterator> it(const_cast<CDBWrapper&>(dbw).NewIterator());
|
||||||
for (int seek_start : {0, 5}) {
|
for (const int seek_start : {0, 5}) {
|
||||||
snprintf(buf, sizeof(buf), "%d", seek_start);
|
snprintf(buf, sizeof(buf), "%d", seek_start);
|
||||||
StringContentsSerializer seek_key(buf);
|
StringContentsSerializer seek_key(buf);
|
||||||
it->Seek(seek_key);
|
it->Seek(seek_key);
|
||||||
|
|
|
@ -24,7 +24,7 @@ static void ResetArgs(const std::string& strArg)
|
||||||
|
|
||||||
// Convert to char*:
|
// Convert to char*:
|
||||||
std::vector<const char*> vecChar;
|
std::vector<const char*> vecChar;
|
||||||
for (std::string& s : vecArg)
|
for (const std::string& s : vecArg)
|
||||||
vecChar.push_back(s.c_str());
|
vecChar.push_back(s.c_str());
|
||||||
|
|
||||||
std::string error;
|
std::string error;
|
||||||
|
|
|
@ -136,7 +136,7 @@ BOOST_AUTO_TEST_CASE(key_io_invalid)
|
||||||
std::string exp_base58string = test[0].get_str();
|
std::string exp_base58string = test[0].get_str();
|
||||||
|
|
||||||
// must be invalid as public and as private key
|
// must be invalid as public and as private key
|
||||||
for (auto chain : { CBaseChainParams::MAIN, CBaseChainParams::TESTNET, CBaseChainParams::REGTEST }) {
|
for (const auto& chain : { CBaseChainParams::MAIN, CBaseChainParams::TESTNET, CBaseChainParams::REGTEST }) {
|
||||||
SelectParams(chain);
|
SelectParams(chain);
|
||||||
destination = DecodeDestination(exp_base58string);
|
destination = DecodeDestination(exp_base58string);
|
||||||
BOOST_CHECK_MESSAGE(!IsValidDestination(destination), "IsValid pubkey in mainnet:" + strTest);
|
BOOST_CHECK_MESSAGE(!IsValidDestination(destination), "IsValid pubkey in mainnet:" + strTest);
|
||||||
|
|
|
@ -146,7 +146,7 @@ BOOST_AUTO_TEST_CASE(findearliestatleast_test)
|
||||||
BOOST_AUTO_TEST_CASE(findearliestatleast_edge_test)
|
BOOST_AUTO_TEST_CASE(findearliestatleast_edge_test)
|
||||||
{
|
{
|
||||||
std::list<CBlockIndex> blocks;
|
std::list<CBlockIndex> blocks;
|
||||||
for (unsigned int timeMax : {100, 100, 100, 200, 200, 200, 300, 300, 300}) {
|
for (const unsigned int timeMax : {100, 100, 100, 200, 200, 200, 300, 300, 300}) {
|
||||||
CBlockIndex* prev = blocks.empty() ? nullptr : &blocks.back();
|
CBlockIndex* prev = blocks.empty() ? nullptr : &blocks.back();
|
||||||
blocks.emplace_back();
|
blocks.emplace_back();
|
||||||
blocks.back().nHeight = prev ? prev->nHeight + 1 : 0;
|
blocks.back().nHeight = prev ? prev->nHeight + 1 : 0;
|
||||||
|
|
|
@ -29,7 +29,7 @@ void CConnmanTest::AddNode(CNode& node)
|
||||||
void CConnmanTest::ClearNodes()
|
void CConnmanTest::ClearNodes()
|
||||||
{
|
{
|
||||||
LOCK(g_connman->cs_vNodes);
|
LOCK(g_connman->cs_vNodes);
|
||||||
for (CNode* node : g_connman->vNodes) {
|
for (const CNode* node : g_connman->vNodes) {
|
||||||
delete node;
|
delete node;
|
||||||
}
|
}
|
||||||
g_connman->vNodes.clear();
|
g_connman->vNodes.clear();
|
||||||
|
|
|
@ -65,7 +65,7 @@ unsigned int ParseScriptFlags(std::string strFlags)
|
||||||
std::vector<std::string> words;
|
std::vector<std::string> words;
|
||||||
boost::algorithm::split(words, strFlags, boost::algorithm::is_any_of(","));
|
boost::algorithm::split(words, strFlags, boost::algorithm::is_any_of(","));
|
||||||
|
|
||||||
for (std::string word : words)
|
for (const std::string& word : words)
|
||||||
{
|
{
|
||||||
if (!mapFlagNames.count(word))
|
if (!mapFlagNames.count(word))
|
||||||
BOOST_ERROR("Bad test: unknown verification flag '" << word << "'");
|
BOOST_ERROR("Bad test: unknown verification flag '" << word << "'");
|
||||||
|
|
|
@ -245,7 +245,7 @@ BOOST_AUTO_TEST_CASE(util_GetBoolArg)
|
||||||
testArgs.ParseParameters(7, (char**)argv_test, error);
|
testArgs.ParseParameters(7, (char**)argv_test, error);
|
||||||
|
|
||||||
// Each letter should be set.
|
// Each letter should be set.
|
||||||
for (char opt : "abcdef")
|
for (const char opt : "abcdef")
|
||||||
BOOST_CHECK(testArgs.IsArgSet({'-', opt}) || !opt);
|
BOOST_CHECK(testArgs.IsArgSet({'-', opt}) || !opt);
|
||||||
|
|
||||||
// Nothing else should be in the map
|
// Nothing else should be in the map
|
||||||
|
@ -394,7 +394,7 @@ BOOST_AUTO_TEST_CASE(util_ReadConfigStream)
|
||||||
&& test_args.GetArg("-iii", "xxx") == "xxx"
|
&& test_args.GetArg("-iii", "xxx") == "xxx"
|
||||||
);
|
);
|
||||||
|
|
||||||
for (bool def : {false, true}) {
|
for (const bool def : {false, true}) {
|
||||||
BOOST_CHECK(test_args.GetBoolArg("-a", def)
|
BOOST_CHECK(test_args.GetBoolArg("-a", def)
|
||||||
&& test_args.GetBoolArg("-b", def)
|
&& test_args.GetBoolArg("-b", def)
|
||||||
&& !test_args.GetBoolArg("-ccc", def)
|
&& !test_args.GetBoolArg("-ccc", def)
|
||||||
|
|
|
@ -94,7 +94,7 @@ void AddTimeData(const CNetAddr& ip, int64_t nOffsetSample)
|
||||||
{
|
{
|
||||||
// If nobody has a time different than ours but within 5 minutes of ours, give a warning
|
// If nobody has a time different than ours but within 5 minutes of ours, give a warning
|
||||||
bool fMatch = false;
|
bool fMatch = false;
|
||||||
for (int64_t nOffset : vSorted)
|
for (const int64_t nOffset : vSorted)
|
||||||
if (nOffset != 0 && abs64(nOffset) < 5 * 60)
|
if (nOffset != 0 && abs64(nOffset) < 5 * 60)
|
||||||
fMatch = true;
|
fMatch = true;
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ void AddTimeData(const CNetAddr& ip, int64_t nOffsetSample)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LogAcceptCategory(BCLog::NET)) {
|
if (LogAcceptCategory(BCLog::NET)) {
|
||||||
for (int64_t n : vSorted) {
|
for (const int64_t n : vSorted) {
|
||||||
LogPrint(BCLog::NET, "%+d ", n); /* Continued */
|
LogPrint(BCLog::NET, "%+d ", n); /* Continued */
|
||||||
}
|
}
|
||||||
LogPrint(BCLog::NET, "| "); /* Continued */
|
LogPrint(BCLog::NET, "| "); /* Continued */
|
||||||
|
|
|
@ -193,7 +193,7 @@ bool CTxMemPool::CalculateMemPoolAncestors(const CTxMemPoolEntry &entry, setEntr
|
||||||
}
|
}
|
||||||
|
|
||||||
const setEntries & setMemPoolParents = GetMemPoolParents(stageit);
|
const setEntries & setMemPoolParents = GetMemPoolParents(stageit);
|
||||||
for (const txiter &phash : setMemPoolParents) {
|
for (txiter phash : setMemPoolParents) {
|
||||||
// If this is a new ancestor, add it.
|
// If this is a new ancestor, add it.
|
||||||
if (setAncestors.count(phash) == 0) {
|
if (setAncestors.count(phash) == 0) {
|
||||||
parentHashes.insert(phash);
|
parentHashes.insert(phash);
|
||||||
|
@ -454,7 +454,7 @@ void CTxMemPool::CalculateDescendants(txiter entryit, setEntries& setDescendants
|
||||||
stage.erase(it);
|
stage.erase(it);
|
||||||
|
|
||||||
const setEntries &setChildren = GetMemPoolChildren(it);
|
const setEntries &setChildren = GetMemPoolChildren(it);
|
||||||
for (const txiter &childiter : setChildren) {
|
for (txiter childiter : setChildren) {
|
||||||
if (!setDescendants.count(childiter)) {
|
if (!setDescendants.count(childiter)) {
|
||||||
stage.insert(childiter);
|
stage.insert(childiter);
|
||||||
}
|
}
|
||||||
|
@ -899,7 +899,7 @@ size_t CTxMemPool::DynamicMemoryUsage() const {
|
||||||
void CTxMemPool::RemoveStaged(setEntries &stage, bool updateDescendants, MemPoolRemovalReason reason) {
|
void CTxMemPool::RemoveStaged(setEntries &stage, bool updateDescendants, MemPoolRemovalReason reason) {
|
||||||
AssertLockHeld(cs);
|
AssertLockHeld(cs);
|
||||||
UpdateForRemoveFromMempool(stage, updateDescendants);
|
UpdateForRemoveFromMempool(stage, updateDescendants);
|
||||||
for (const txiter& it : stage) {
|
for (txiter it : stage) {
|
||||||
removeUnchecked(it, reason);
|
removeUnchecked(it, reason);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ bool IsHexNumber(const std::string& str)
|
||||||
if (str.size() > 2 && *str.begin() == '0' && *(str.begin()+1) == 'x') {
|
if (str.size() > 2 && *str.begin() == '0' && *(str.begin()+1) == 'x') {
|
||||||
starting_location = 2;
|
starting_location = 2;
|
||||||
}
|
}
|
||||||
for (auto c : str.substr(starting_location)) {
|
for (const char c : str.substr(starting_location)) {
|
||||||
if (HexDigit(c) < 0) return false;
|
if (HexDigit(c) < 0) return false;
|
||||||
}
|
}
|
||||||
// Return false for empty string or "0x".
|
// Return false for empty string or "0x".
|
||||||
|
|
|
@ -421,7 +421,7 @@ bool CheckSequenceLocks(const CTransaction &tx, int flags, LockPoints* lp, bool
|
||||||
// lock on a mempool input, so we can use the return value of
|
// lock on a mempool input, so we can use the return value of
|
||||||
// CheckSequenceLocks to indicate the LockPoints validity
|
// CheckSequenceLocks to indicate the LockPoints validity
|
||||||
int maxInputHeight = 0;
|
int maxInputHeight = 0;
|
||||||
for (int height : prevheights) {
|
for (const int height : prevheights) {
|
||||||
// Can ignore mempool inputs since we'll fail if they had non-zero locks
|
// Can ignore mempool inputs since we'll fail if they had non-zero locks
|
||||||
if (height != tip->nHeight+1) {
|
if (height != tip->nHeight+1) {
|
||||||
maxInputHeight = std::max(maxInputHeight, height);
|
maxInputHeight = std::max(maxInputHeight, height);
|
||||||
|
@ -4291,7 +4291,7 @@ void UnloadBlockIndex()
|
||||||
warningcache[b].clear();
|
warningcache[b].clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (BlockMap::value_type& entry : mapBlockIndex) {
|
for (const BlockMap::value_type& entry : mapBlockIndex) {
|
||||||
delete entry.second;
|
delete entry.second;
|
||||||
}
|
}
|
||||||
mapBlockIndex.clear();
|
mapBlockIndex.clear();
|
||||||
|
@ -4492,7 +4492,7 @@ void CChainState::CheckBlockIndex(const Consensus::Params& consensusParams)
|
||||||
|
|
||||||
// Build forward-pointing map of the entire block tree.
|
// Build forward-pointing map of the entire block tree.
|
||||||
std::multimap<CBlockIndex*,CBlockIndex*> forward;
|
std::multimap<CBlockIndex*,CBlockIndex*> forward;
|
||||||
for (auto& entry : mapBlockIndex) {
|
for (const std::pair<const uint256, CBlockIndex*>& entry : mapBlockIndex) {
|
||||||
forward.insert(std::make_pair(entry.second->pprev, entry.second));
|
forward.insert(std::make_pair(entry.second->pprev, entry.second));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -311,7 +311,7 @@ bool CCryptoKeyStore::EncryptKeys(CKeyingMaterial& vMasterKeyIn)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
fUseCrypto = true;
|
fUseCrypto = true;
|
||||||
for (KeyMap::value_type& mKey : mapKeys)
|
for (const KeyMap::value_type& mKey : mapKeys)
|
||||||
{
|
{
|
||||||
const CKey &key = mKey.second;
|
const CKey &key = mKey.second;
|
||||||
CPubKey vchPubKey = key.GetPubKey();
|
CPubKey vchPubKey = key.GetPubKey();
|
||||||
|
|
|
@ -503,7 +503,7 @@ BerkeleyBatch::BerkeleyBatch(BerkeleyDatabase& database, const char* pszMode, bo
|
||||||
// be implemented, so no equality checks are needed at all. (Newer
|
// be implemented, so no equality checks are needed at all. (Newer
|
||||||
// versions of BDB have an set_lk_exclusive method for this
|
// versions of BDB have an set_lk_exclusive method for this
|
||||||
// purpose, but the older version we use does not.)
|
// purpose, but the older version we use does not.)
|
||||||
for (auto& env : g_dbenvs) {
|
for (const auto& env : g_dbenvs) {
|
||||||
CheckUniqueFileid(env.second, strFilename, *pdb_temp);
|
CheckUniqueFileid(env.second, strFilename, *pdb_temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ int64_t static DecodeDumpTime(const std::string &str) {
|
||||||
|
|
||||||
std::string static EncodeDumpString(const std::string &str) {
|
std::string static EncodeDumpString(const std::string &str) {
|
||||||
std::stringstream ret;
|
std::stringstream ret;
|
||||||
for (unsigned char c : str) {
|
for (const unsigned char c : str) {
|
||||||
if (c <= 32 || c >= 128 || c == '%') {
|
if (c <= 32 || c >= 128 || c == '%') {
|
||||||
ret << '%' << HexStr(&c, &c + 1);
|
ret << '%' << HexStr(&c, &c + 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -2337,7 +2337,7 @@ static UniValue listlockunspent(const JSONRPCRequest& request)
|
||||||
|
|
||||||
UniValue ret(UniValue::VARR);
|
UniValue ret(UniValue::VARR);
|
||||||
|
|
||||||
for (COutPoint &outpt : vOutpts) {
|
for (const COutPoint& outpt : vOutpts) {
|
||||||
UniValue o(UniValue::VOBJ);
|
UniValue o(UniValue::VOBJ);
|
||||||
|
|
||||||
o.pushKV("txid", outpt.hash.GetHex());
|
o.pushKV("txid", outpt.hash.GetHex());
|
||||||
|
|
|
@ -1484,7 +1484,7 @@ int64_t CalculateMaximumSignedTxSize(const CTransaction &tx, const CWallet *wall
|
||||||
// Look up the inputs. We should have already checked that this transaction
|
// Look up the inputs. We should have already checked that this transaction
|
||||||
// IsAllFromMe(ISMINE_SPENDABLE), so every input should already be in our
|
// IsAllFromMe(ISMINE_SPENDABLE), so every input should already be in our
|
||||||
// wallet, with a valid index into the vout array, and the ability to sign.
|
// wallet, with a valid index into the vout array, and the ability to sign.
|
||||||
for (auto& input : tx.vin) {
|
for (const CTxIn& input : tx.vin) {
|
||||||
const auto mi = wallet->mapWallet.find(input.prevout.hash);
|
const auto mi = wallet->mapWallet.find(input.prevout.hash);
|
||||||
if (mi == wallet->mapWallet.end()) {
|
if (mi == wallet->mapWallet.end()) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1723,7 +1723,7 @@ void CWallet::ReacceptWalletTransactions()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to add wallet transactions to memory pool
|
// Try to add wallet transactions to memory pool
|
||||||
for (std::pair<const int64_t, CWalletTx*>& item : mapSorted) {
|
for (const std::pair<const int64_t, CWalletTx*>& item : mapSorted) {
|
||||||
CWalletTx& wtx = *(item.second);
|
CWalletTx& wtx = *(item.second);
|
||||||
CValidationState state;
|
CValidationState state;
|
||||||
wtx.AcceptToMemoryPool(maxTxFee, state);
|
wtx.AcceptToMemoryPool(maxTxFee, state);
|
||||||
|
@ -1969,7 +1969,7 @@ std::vector<uint256> CWallet::ResendWalletTransactionsBefore(int64_t nTime, CCon
|
||||||
continue;
|
continue;
|
||||||
mapSorted.insert(std::make_pair(wtx.nTimeReceived, &wtx));
|
mapSorted.insert(std::make_pair(wtx.nTimeReceived, &wtx));
|
||||||
}
|
}
|
||||||
for (std::pair<const unsigned int, CWalletTx*>& item : mapSorted)
|
for (const std::pair<const unsigned int, CWalletTx*>& item : mapSorted)
|
||||||
{
|
{
|
||||||
CWalletTx& wtx = *item.second;
|
CWalletTx& wtx = *item.second;
|
||||||
if (wtx.RelayWalletTransaction(connman))
|
if (wtx.RelayWalletTransaction(connman))
|
||||||
|
@ -2260,7 +2260,7 @@ std::map<CTxDestination, std::vector<COutput>> CWallet::ListCoins() const
|
||||||
|
|
||||||
AvailableCoins(availableCoins);
|
AvailableCoins(availableCoins);
|
||||||
|
|
||||||
for (auto& coin : availableCoins) {
|
for (const COutput& coin : availableCoins) {
|
||||||
CTxDestination address;
|
CTxDestination address;
|
||||||
if (coin.fSpendable &&
|
if (coin.fSpendable &&
|
||||||
ExtractDestination(FindNonChangeParentOutput(*coin.tx->tx, coin.i).scriptPubKey, address)) {
|
ExtractDestination(FindNonChangeParentOutput(*coin.tx->tx, coin.i).scriptPubKey, address)) {
|
||||||
|
@ -2270,7 +2270,7 @@ std::map<CTxDestination, std::vector<COutput>> CWallet::ListCoins() const
|
||||||
|
|
||||||
std::vector<COutPoint> lockedCoins;
|
std::vector<COutPoint> lockedCoins;
|
||||||
ListLockedCoins(lockedCoins);
|
ListLockedCoins(lockedCoins);
|
||||||
for (const auto& output : lockedCoins) {
|
for (const COutPoint& output : lockedCoins) {
|
||||||
auto it = mapWallet.find(output.hash);
|
auto it = mapWallet.find(output.hash);
|
||||||
if (it != mapWallet.end()) {
|
if (it != mapWallet.end()) {
|
||||||
int depth = it->second.GetDepthInMainChain();
|
int depth = it->second.GetDepthInMainChain();
|
||||||
|
@ -3146,17 +3146,17 @@ bool CWallet::NewKeyPool()
|
||||||
LOCK(cs_wallet);
|
LOCK(cs_wallet);
|
||||||
WalletBatch batch(*database);
|
WalletBatch batch(*database);
|
||||||
|
|
||||||
for (int64_t nIndex : setInternalKeyPool) {
|
for (const int64_t nIndex : setInternalKeyPool) {
|
||||||
batch.ErasePool(nIndex);
|
batch.ErasePool(nIndex);
|
||||||
}
|
}
|
||||||
setInternalKeyPool.clear();
|
setInternalKeyPool.clear();
|
||||||
|
|
||||||
for (int64_t nIndex : setExternalKeyPool) {
|
for (const int64_t nIndex : setExternalKeyPool) {
|
||||||
batch.ErasePool(nIndex);
|
batch.ErasePool(nIndex);
|
||||||
}
|
}
|
||||||
setExternalKeyPool.clear();
|
setExternalKeyPool.clear();
|
||||||
|
|
||||||
for (int64_t nIndex : set_pre_split_keypool) {
|
for (const int64_t nIndex : set_pre_split_keypool) {
|
||||||
batch.ErasePool(nIndex);
|
batch.ErasePool(nIndex);
|
||||||
}
|
}
|
||||||
set_pre_split_keypool.clear();
|
set_pre_split_keypool.clear();
|
||||||
|
@ -3433,7 +3433,7 @@ std::set< std::set<CTxDestination> > CWallet::GetAddressGroupings()
|
||||||
{
|
{
|
||||||
bool any_mine = false;
|
bool any_mine = false;
|
||||||
// group all input addresses with each other
|
// group all input addresses with each other
|
||||||
for (CTxIn txin : pcoin->tx->vin)
|
for (const CTxIn& txin : pcoin->tx->vin)
|
||||||
{
|
{
|
||||||
CTxDestination address;
|
CTxDestination address;
|
||||||
if(!IsMine(txin)) /* If this input isn't mine, ignore it */
|
if(!IsMine(txin)) /* If this input isn't mine, ignore it */
|
||||||
|
@ -3447,7 +3447,7 @@ std::set< std::set<CTxDestination> > CWallet::GetAddressGroupings()
|
||||||
// group change with input addresses
|
// group change with input addresses
|
||||||
if (any_mine)
|
if (any_mine)
|
||||||
{
|
{
|
||||||
for (CTxOut txout : pcoin->tx->vout)
|
for (const CTxOut& txout : pcoin->tx->vout)
|
||||||
if (IsChange(txout))
|
if (IsChange(txout))
|
||||||
{
|
{
|
||||||
CTxDestination txoutAddr;
|
CTxDestination txoutAddr;
|
||||||
|
@ -3483,7 +3483,7 @@ std::set< std::set<CTxDestination> > CWallet::GetAddressGroupings()
|
||||||
// make a set of all the groups hit by this new group
|
// make a set of all the groups hit by this new group
|
||||||
std::set< std::set<CTxDestination>* > hits;
|
std::set< std::set<CTxDestination>* > hits;
|
||||||
std::map< CTxDestination, std::set<CTxDestination>* >::iterator it;
|
std::map< CTxDestination, std::set<CTxDestination>* >::iterator it;
|
||||||
for (CTxDestination address : _grouping)
|
for (const CTxDestination& address : _grouping)
|
||||||
if ((it = setmap.find(address)) != setmap.end())
|
if ((it = setmap.find(address)) != setmap.end())
|
||||||
hits.insert((*it).second);
|
hits.insert((*it).second);
|
||||||
|
|
||||||
|
@ -3498,12 +3498,12 @@ std::set< std::set<CTxDestination> > CWallet::GetAddressGroupings()
|
||||||
uniqueGroupings.insert(merged);
|
uniqueGroupings.insert(merged);
|
||||||
|
|
||||||
// update setmap
|
// update setmap
|
||||||
for (CTxDestination element : *merged)
|
for (const CTxDestination& element : *merged)
|
||||||
setmap[element] = merged;
|
setmap[element] = merged;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::set< std::set<CTxDestination> > ret;
|
std::set< std::set<CTxDestination> > ret;
|
||||||
for (std::set<CTxDestination>* uniqueGrouping : uniqueGroupings)
|
for (const std::set<CTxDestination>* uniqueGrouping : uniqueGroupings)
|
||||||
{
|
{
|
||||||
ret.insert(*uniqueGrouping);
|
ret.insert(*uniqueGrouping);
|
||||||
delete uniqueGrouping;
|
delete uniqueGrouping;
|
||||||
|
|
|
@ -520,7 +520,7 @@ DBErrors WalletBatch::LoadWallet(CWallet* pwallet)
|
||||||
if ((wss.nKeys + wss.nCKeys + wss.nWatchKeys) != wss.nKeyMeta)
|
if ((wss.nKeys + wss.nCKeys + wss.nWatchKeys) != wss.nKeyMeta)
|
||||||
pwallet->UpdateTimeFirstKey(1);
|
pwallet->UpdateTimeFirstKey(1);
|
||||||
|
|
||||||
for (uint256 hash : wss.vWalletUpgrade)
|
for (const uint256& hash : wss.vWalletUpgrade)
|
||||||
WriteTx(pwallet->mapWallet.at(hash));
|
WriteTx(pwallet->mapWallet.at(hash));
|
||||||
|
|
||||||
// Rewrite encrypted wallets of versions 0.4.0 and 0.5.0rc:
|
// Rewrite encrypted wallets of versions 0.4.0 and 0.5.0rc:
|
||||||
|
@ -611,7 +611,7 @@ DBErrors WalletBatch::ZapSelectTx(std::vector<uint256>& vTxHashIn, std::vector<u
|
||||||
// erase each matching wallet TX
|
// erase each matching wallet TX
|
||||||
bool delerror = false;
|
bool delerror = false;
|
||||||
std::vector<uint256>::iterator it = vTxHashIn.begin();
|
std::vector<uint256>::iterator it = vTxHashIn.begin();
|
||||||
for (uint256 hash : vTxHash) {
|
for (const uint256& hash : vTxHash) {
|
||||||
while (it < vTxHashIn.end() && (*it) < hash) {
|
while (it < vTxHashIn.end() && (*it) < hash) {
|
||||||
it++;
|
it++;
|
||||||
}
|
}
|
||||||
|
@ -642,7 +642,7 @@ DBErrors WalletBatch::ZapWalletTx(std::vector<CWalletTx>& vWtx)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
// erase each wallet TX
|
// erase each wallet TX
|
||||||
for (uint256& hash : vTxHash) {
|
for (const uint256& hash : vTxHash) {
|
||||||
if (!EraseTx(hash))
|
if (!EraseTx(hash))
|
||||||
return DBErrors::CORRUPT;
|
return DBErrors::CORRUPT;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue