mirror of
https://github.com/monero-project/monero.git
synced 2024-12-14 04:16:32 +02:00
Merge pull request #2216
d8becf2e
blockchain: fix cryptonight buffer leak on exit (moneromooo-monero)91aa90fc
blockchain: ensure all blocks get their longhash precalculated (moneromooo-monero)ff4bcaed
blockchain: pass correct height to get_block_longhash (moneromooo-monero)
This commit is contained in:
commit
8048de268a
@ -3555,19 +3555,17 @@ void Blockchain::set_enforce_dns_checkpoints(bool enforce_checkpoints)
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------
|
||||
void Blockchain::block_longhash_worker(const uint64_t height, const std::vector<block> &blocks, std::unordered_map<crypto::hash, crypto::hash> &map) const
|
||||
void Blockchain::block_longhash_worker(uint64_t height, const std::vector<block> &blocks, std::unordered_map<crypto::hash, crypto::hash> &map) const
|
||||
{
|
||||
TIME_MEASURE_START(t);
|
||||
slow_hash_allocate_state();
|
||||
|
||||
//FIXME: height should be changing here, as get_block_longhash expects
|
||||
// the height of the block passed to it
|
||||
for (const auto & block : blocks)
|
||||
{
|
||||
if (m_cancel)
|
||||
return;
|
||||
break;
|
||||
crypto::hash id = get_block_hash(block);
|
||||
crypto::hash pow = get_block_longhash(block, height);
|
||||
crypto::hash pow = get_block_longhash(block, height++);
|
||||
map.emplace(id, pow);
|
||||
}
|
||||
|
||||
@ -3759,9 +3757,11 @@ bool Blockchain::prepare_handle_incoming_blocks(const std::list<block_complete_e
|
||||
if (!blocks_exist)
|
||||
{
|
||||
m_blocks_longhash_table.clear();
|
||||
uint64_t thread_height = height;
|
||||
for (uint64_t i = 0; i < threads; i++)
|
||||
{
|
||||
thread_list.push_back(new boost::thread(attrs, boost::bind(&Blockchain::block_longhash_worker, this, height + (i * batches), std::cref(blocks[i]), std::ref(maps[i]))));
|
||||
thread_list.push_back(new boost::thread(attrs, boost::bind(&Blockchain::block_longhash_worker, this, thread_height, std::cref(blocks[i]), std::ref(maps[i]))));
|
||||
thread_height += blocks[i].size();
|
||||
}
|
||||
|
||||
for (size_t j = 0; j < thread_list.size(); j++)
|
||||
|
@ -846,7 +846,7 @@ namespace cryptonote
|
||||
* @param blocks the blocks to be hashed
|
||||
* @param map return-by-reference the hashes for each block
|
||||
*/
|
||||
void block_longhash_worker(const uint64_t height, const std::vector<block> &blocks,
|
||||
void block_longhash_worker(uint64_t height, const std::vector<block> &blocks,
|
||||
std::unordered_map<crypto::hash, crypto::hash> &map) const;
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user