diff --git a/src/wallet/MoneroWallet.cpp b/src/wallet/MoneroWallet.cpp index 7d8661d..4459661 100644 --- a/src/wallet/MoneroWallet.cpp +++ b/src/wallet/MoneroWallet.cpp @@ -587,8 +587,16 @@ namespace monero { // filter txs that don't meet transfer request request.transferRequest = transferRequest; vector> txsRequested; - for (const shared_ptr& tx : txs) { - if (request.meetsCriteria(tx.get())) txsRequested.push_back(tx); + vector>::iterator txIter = txs.begin(); + while (txIter != txs.end()) { + shared_ptr tx = *txIter; + if (request.meetsCriteria(tx.get())) { + txsRequested.push_back(tx); + txIter++; + } else { + txIter = txs.erase(txIter); + tx->block.get()->txs.erase(std::remove(tx->block.get()->txs.begin(), tx->block.get()->txs.end(), tx), tx->block.get()->txs.end()); // TODO, no way to use txIter? + } } txs = txsRequested; @@ -628,12 +636,12 @@ namespace monero { //cout << "1" << endl; -// // print request -// cout << "Transfer request: " << request.serialize() << endl; -// if (request.txRequest != boost::none) { -// if ((*request.txRequest)->block == boost::none) cout << "Transfer request's tx request rooted at [tx]:" << (*request.txRequest)->serialize() << endl; -// else cout << "Transfer request's tx request rooted at [block]: " << (*(*request.txRequest)->block)->serialize() << endl; -// } + // print request + cout << "Transfer request: " << request.serialize() << endl; + if (request.txRequest != boost::none) { + if ((*request.txRequest)->block == boost::none) cout << "Transfer request's tx request rooted at [tx]:" << (*request.txRequest)->serialize() << endl; + else cout << "Transfer request's tx request rooted at [block]: " << (*(*request.txRequest)->block)->serialize() << endl; + } // normalize request // TODO: this will modify original request, construct copy? add test diff --git a/src/wallet/MoneroWalletModel.cpp b/src/wallet/MoneroWalletModel.cpp index b163a6d..e40c3cd 100644 --- a/src/wallet/MoneroWalletModel.cpp +++ b/src/wallet/MoneroWalletModel.cpp @@ -145,15 +145,14 @@ namespace monero { // filter on incoming if (isIncoming != boost::none) { - if (*isIncoming && !tx->getIsIncoming()) return false; - if (!*isIncoming && tx->getIsIncoming()) return false; + if (isIncoming != tx->getIsIncoming()) return false; } //cout << "5" << endl; // filter on outgoing if (isOutgoing != boost::none) { - if (isOutgoing.get() != tx->getIsOutgoing()) return false; + if (isOutgoing != tx->getIsOutgoing()) return false; } //cout << "6" << endl;