From b9fd83e19d8360c3178ff5ef53e00db34437110f Mon Sep 17 00:00:00 2001 From: woodser Date: Sun, 28 Jul 2019 11:58:03 -0400 Subject: [PATCH] getSubaddresses() uses overloaded impl; const correctness on getSubaddresses() given indices --- src/wallet/MoneroWallet.cpp | 20 ++++++++++---------- src/wallet/MoneroWallet.h | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 31c047e..9bf30b8 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -1227,13 +1227,11 @@ namespace monero { return account; } - vector MoneroWallet::getSubaddresses(const uint32_t accountIdx) const { // TODO **: this should call one below - vector transfers; - wallet2->get_transfers(transfers); - return getSubaddressesAux(accountIdx, vector(), transfers); + vector MoneroWallet::getSubaddresses(const uint32_t accountIdx) const { + return getSubaddresses(accountIdx, vector()); } - vector MoneroWallet::getSubaddresses(const uint32_t accountIdx, const vector subaddressIndices) const { + vector MoneroWallet::getSubaddresses(const uint32_t accountIdx, const vector& subaddressIndices) const { MTRACE("getSubaddresses(" << accountIdx << ", ...)"); MTRACE("Subaddress indices size: " << subaddressIndices.size()); @@ -2380,7 +2378,7 @@ namespace monero { } // private helper to initialize subaddresses using transfer details - vector MoneroWallet::getSubaddressesAux(const uint32_t accountIdx, vector subaddressIndices, const vector& transfers) const { + vector MoneroWallet::getSubaddressesAux(const uint32_t accountIdx, const vector& subaddressIndices, const vector& transfers) const { vector subaddresses; // get balances per subaddress as maps @@ -2388,18 +2386,20 @@ namespace monero { map> unlockedBalancePerSubaddress = wallet2->unlocked_balance_per_subaddress(accountIdx); // get all indices if no indices given + vector subaddressIndicesReq; if (subaddressIndices.empty()) { - subaddressIndices = vector(); for (uint32_t subaddressIdx = 0; subaddressIdx < wallet2->get_num_subaddresses(accountIdx); subaddressIdx++) { - subaddressIndices.push_back(subaddressIdx); + subaddressIndicesReq.push_back(subaddressIdx); } + } else { + subaddressIndicesReq = subaddressIndices; } // initialize subaddresses at indices - for (uint32_t subaddressIndicesIdx = 0; subaddressIndicesIdx < subaddressIndices.size(); subaddressIndicesIdx++) { + for (uint32_t subaddressIndicesIdx = 0; subaddressIndicesIdx < subaddressIndicesReq.size(); subaddressIndicesIdx++) { MoneroSubaddress subaddress; subaddress.accountIndex = accountIdx; - uint32_t subaddressIdx = subaddressIndices.at(subaddressIndicesIdx); + uint32_t subaddressIdx = subaddressIndicesReq.at(subaddressIndicesIdx); subaddress.index = subaddressIdx; subaddress.address = getAddress(accountIdx, subaddressIdx); subaddress.label = wallet2->get_subaddress_label({accountIdx, subaddressIdx}); diff --git a/src/wallet/MoneroWallet.h b/src/wallet/MoneroWallet.h index c3ae17e..abd1641 100644 --- a/src/wallet/MoneroWallet.h +++ b/src/wallet/MoneroWallet.h @@ -588,7 +588,7 @@ namespace monero { * @param subaddressIndices are specific subaddresses to get (optional) * @return the retrieved subaddresses */ - vector getSubaddresses(const uint32_t accountIdx, const vector subaddressIndices) const; + vector getSubaddresses(const uint32_t accountIdx, const vector& subaddressIndices) const; /** * Get a subaddress. @@ -1220,7 +1220,7 @@ namespace monero { boost::optional listener = boost::none; // wallet's external listener void initCommon(); - vector getSubaddressesAux(uint32_t accountIdx, vector subaddressIndices, const vector& transfers) const; + vector getSubaddressesAux(uint32_t accountIdx, const vector& subaddressIndices, const vector& transfers) const; // blockchain sync management mutable std::atomic isSynced; // whether or not wallet is synced