aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-08-25 18:59:29 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-08-26 20:53:54 +0100
commitc1b10381fc3667244ff03ed718aae0e3ae8a662a (patch)
treefae788dd14180ee14cd3df22c94703cebacd2844
parentMerge pull request #2311 (diff)
downloadmonero-c1b10381fc3667244ff03ed718aae0e3ae8a662a.tar.xz
rpc: decrease memory usage a bit in getblocks.bin
-rw-r--r--src/rpc/core_rpc_server.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp
index a5de36118..1d3d31c74 100644
--- a/src/rpc/core_rpc_server.cpp
+++ b/src/rpc/core_rpc_server.cpp
@@ -205,14 +205,17 @@ namespace cryptonote
}
size_t txidx = 0;
ntxes += bd.second.size();
- for(const auto& t: bd.second)
+ for (std::list<cryptonote::blobdata>::iterator i = bd.second.begin(); i != bd.second.end(); ++i)
{
+ unpruned_size += i->size();
if (req.prune)
- res.blocks.back().txs.push_back(get_pruned_tx_blob(t));
+ res.blocks.back().txs.push_back(get_pruned_tx_blob(std::move(*i)));
else
- res.blocks.back().txs.push_back(t);
+ res.blocks.back().txs.push_back(std::move(*i));
+ i->clear();
+ i->shrink_to_fit();
pruned_size += res.blocks.back().txs.back().size();
- unpruned_size += t.size();
+
res.output_indices.back().indices.push_back(COMMAND_RPC_GET_BLOCKS_FAST::tx_output_indices());
bool r = m_core.get_tx_outputs_gindexs(b.tx_hashes[txidx++], res.output_indices.back().indices.back().indices);
if (!r)