diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-09-14 20:20:16 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-09-14 20:23:28 +0100 |
commit | 70b78bb2c8baac5432a2a99f0f2f6122904d1cd7 (patch) | |
tree | 7c96d53b72fca39ffdc9d501bf92e1ee15138777 /src/wallet | |
parent | rct: rework serialization to avoid storing vector sizes (diff) | |
download | monero-70b78bb2c8baac5432a2a99f0f2f6122904d1cd7.tar.xz |
wallet: fix misdetection of duplicates
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/wallet2.cpp | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index a195abde6..01892dc49 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -2806,9 +2806,10 @@ void wallet2::get_outs(std::vector<std::vector<entry>> &outs, const std::list<tr continue; if (!daemon_resp.outs[i].unlocked) // don't add locked outs continue; - if (o > 0 && daemon_resp.outs[i].key == daemon_resp.outs[i - 1].key) // don't add duplicates + auto item = std::make_tuple(req.outputs[i].index, daemon_resp.outs[i].key, daemon_resp.outs[i].mask); + if (std::find(outs.back().begin(), outs.back().end(), item) != outs.back().end()) // don't add duplicates continue; - outs.back().push_back(std::make_tuple(req.outputs[i].index, daemon_resp.outs[i].key, daemon_resp.outs[i].mask)); + outs.back().push_back(item); } if (outs.back().size() < fake_outputs_count + 1) { @@ -2818,15 +2819,6 @@ void wallet2::get_outs(std::vector<std::vector<entry>> &outs, const std::list<tr { // sort the subsection, so any spares are reset in order std::sort(outs.back().begin(), outs.back().end(), [](const entry &a, const entry &b) { return std::get<0>(a) < std::get<0>(b); }); - - // sanity check - for (size_t n = 1; n < outs.back().size(); ++n) - { - THROW_WALLET_EXCEPTION_IF(std::get<0>(outs.back()[n]) == std::get<0>(outs.back()[n-1]), error::wallet_internal_error, - "Duplicate indices though we did not ask for any"); - THROW_WALLET_EXCEPTION_IF(std::get<1>(outs.back()[n]) == std::get<1>(outs.back()[n-1]), error::wallet_internal_error, - "Duplicate keys after we have weeded them out"); - } } base += requested_outputs_count; } |