From 8f88b5d75f9d77ba36236ee39a091289fb8edb39 Mon Sep 17 00:00:00 2001 From: woodser Date: Sat, 22 Jun 2019 20:01:21 -0400 Subject: [PATCH] getOutputs collect outputs, erase if filtered --- src/daemon/MoneroDaemonModel.h | 2 +- src/wallet/MoneroWallet.cpp | 14 ++++++++++---- src/wallet/MoneroWalletModel.cpp | 1 - 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/daemon/MoneroDaemonModel.h b/src/daemon/MoneroDaemonModel.h index 45ef3cd..fc3b762 100644 --- a/src/daemon/MoneroDaemonModel.h +++ b/src/daemon/MoneroDaemonModel.h @@ -165,7 +165,7 @@ namespace monero { shared_ptr tx; boost::optional> keyImage; boost::optional amount; - boost::optional index; + boost::optional index; // TODO: is index 32 or 64? vector ringOutputIndices; boost::optional stealthPublicKey; diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 85ed81a..68c6857 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -664,13 +664,19 @@ namespace monero { mergeTx(tx, txMap, blockMap, false); } - // filter and return vouts + // collect outputs, erase if filtered vector> vouts; for (map>::const_iterator txIter = txMap.begin(); txIter != txMap.end(); txIter++) { shared_ptr tx = txIter->second; - for (const shared_ptr& output : tx->vouts) { - shared_ptr outputWallet = static_pointer_cast(output); - if (request.meetsCriteria(outputWallet.get())) vouts.push_back(outputWallet); + vector>::iterator voutIter = tx->vouts.begin(); + while (voutIter != tx->vouts.end()) { + shared_ptr voutWallet = static_pointer_cast(*voutIter); + if (request.meetsCriteria(voutWallet.get())) { + vouts.push_back(voutWallet); + voutIter++; + } else { + voutIter = tx->vouts.erase(voutIter); + } } } return vouts; diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index 85f3b25..1a98682 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -323,7 +323,6 @@ namespace monero { // ------------------------ MONERO OUTPUT REQUEST --------------------------- boost::property_tree::ptree MoneroOutputRequest::toPropertyTree() const { - cout << "MoneroOutputRequest::toPropertyTree(node)" << endl; boost::property_tree::ptree node = MoneroOutputWallet::toPropertyTree(); if (!subaddressIndices.empty()) throw runtime_error("MoneroOutputRequest toPropertyTree() subaddressIndices not implemented"); return node;