diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -206,6 +206,7 @@ -Wunused-parameter -Wmissing-braces -Wthread-safety-analysis + -Wthread-safety-precise -Wshadow -Wshadow-field -Wrange-loop-analysis diff --git a/src/blockencodings.h b/src/blockencodings.h --- a/src/blockencodings.h +++ b/src/blockencodings.h @@ -220,7 +220,7 @@ protected: std::vector txns_available; size_t prefilled_count = 0, mempool_count = 0, extra_count = 0; - CTxMemPool *pool; + const CTxMemPool *pool; const Config *config; public: diff --git a/src/blockencodings.cpp b/src/blockencodings.cpp --- a/src/blockencodings.cpp +++ b/src/blockencodings.cpp @@ -131,15 +131,14 @@ std::vector have_txn(txns_available.size()); { LOCK(pool->cs); - const std::vector> &vTxHashes = - pool->vTxHashes; - for (auto txHash : vTxHashes) { - uint64_t shortid = cmpctblock.GetShortID(txHash.first); + for (size_t i = 0; i < pool->vTxHashes.size(); i++) { + uint64_t shortid = cmpctblock.GetShortID(pool->vTxHashes[i].first); std::unordered_map::iterator idit = shorttxids.find(shortid); if (idit != shorttxids.end()) { if (!have_txn[idit->second]) { - txns_available[idit->second] = txHash.second->GetSharedTx(); + txns_available[idit->second] = + pool->vTxHashes[i].second->GetSharedTx(); have_txn[idit->second] = true; mempool_count++; } else { diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -905,7 +905,7 @@ wallet.BlockUntilSyncedToCurrentChain(); auto locked_chain = pwallet->chain().lock(); - LOCK2(pwallet->cs_wallet, spk_man.cs_KeyStore); + LOCK2(wallet.cs_wallet, spk_man.cs_KeyStore); EnsureWalletIsUnlocked(&wallet); @@ -934,7 +934,7 @@ std::map mapKeyBirth; const std::map &mapKeyPool = spk_man.GetAllReserveKeys(); - pwallet->GetKeyBirthTimes(*locked_chain, mapKeyBirth); + wallet.GetKeyBirthTimes(*locked_chain, mapKeyBirth); std::set scripts = spk_man.GetCScripts();