aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/wallet.cpp
diff options
context:
space:
mode:
authorJoão Barbosa <joao.paulo.barbosa@gmail.com>2018-02-02 11:37:50 +0000
committerJoão Barbosa <joao.paulo.barbosa@gmail.com>2018-02-08 18:18:28 +0000
commit1beea7af92994dca83facb11bbef82b24b538400 (patch)
treeb0864ca2b002fb57e38a80f7902eb3ce0aced1fd /src/wallet/wallet.cpp
parent4cad91663df381d0dff8526f3b4aa74569dfb626 (diff)
downloadbitcoin-1beea7af92994dca83facb11bbef82b24b538400.tar.xz
[wallet] Make CWallet::ListCoins atomic
Diffstat (limited to 'src/wallet/wallet.cpp')
-rw-r--r--src/wallet/wallet.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index 2b8019395c..e89921e95b 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -2198,11 +2198,12 @@ CAmount CWallet::GetAvailableBalance(const CCoinControl* coinControl) const
void CWallet::AvailableCoins(std::vector<COutput> &vCoins, bool fOnlySafe, const CCoinControl *coinControl, const CAmount &nMinimumAmount, const CAmount &nMaximumAmount, const CAmount &nMinimumSumAmount, const uint64_t nMaximumCount, const int nMinDepth, const int nMaxDepth) const
{
+ AssertLockHeld(cs_main);
+ AssertLockHeld(cs_wallet);
+
vCoins.clear();
{
- LOCK2(cs_main, cs_wallet);
-
CAmount nTotal = 0;
for (const auto& entry : mapWallet)
@@ -2320,11 +2321,11 @@ std::map<CTxDestination, std::vector<COutput>> CWallet::ListCoins() const
// avoid adding some extra complexity to the Qt code.
std::map<CTxDestination, std::vector<COutput>> result;
-
std::vector<COutput> availableCoins;
- AvailableCoins(availableCoins);
LOCK2(cs_main, cs_wallet);
+ AvailableCoins(availableCoins);
+
for (auto& coin : availableCoins) {
CTxDestination address;
if (coin.fSpendable &&