diff options
author | Andrew Chow <achow101-github@achow101.com> | 2019-09-17 19:44:19 -0400 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2022-08-03 15:33:15 -0400 |
commit | 272356024db978c92112167f8d8e4cc62adad63d (patch) | |
tree | 13e6d46b171904ea3724d1ec6244e4df615050a6 /src/wallet | |
parent | 97532867cf51db3e941231fbdc60f9f4fa0012a0 (diff) | |
download | bitcoin-272356024db978c92112167f8d8e4cc62adad63d.tar.xz |
Change getWalletTxs to return a set instead of a vector
For some reason, the primary consumer of getWalletTxs requires the
transactions to be in hash order when it is processing them. std::map
will iterate in hash order so the transactions end up in that order when
placed into the vector. To ensure this order when mapWallet is no longer
ordered, the vector is replaced with a set which will maintain the hash
order.
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/interfaces.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/wallet/interfaces.cpp b/src/wallet/interfaces.cpp index 23f91d9b3a..5add128717 100644 --- a/src/wallet/interfaces.cpp +++ b/src/wallet/interfaces.cpp @@ -318,13 +318,12 @@ public: } return {}; } - std::vector<WalletTx> getWalletTxs() override + std::set<WalletTx> getWalletTxs() override { LOCK(m_wallet->cs_wallet); - std::vector<WalletTx> result; - result.reserve(m_wallet->mapWallet.size()); + std::set<WalletTx> result; for (const auto& entry : m_wallet->mapWallet) { - result.emplace_back(MakeWalletTx(*m_wallet, entry.second)); + result.emplace(MakeWalletTx(*m_wallet, entry.second)); } return result; } |