blockchain: don't try to use hash check array after it's freed

It's freed when we've synced past its end, but we might still
find an old chain somewhere
This commit is contained in:
moneromooo-monero 2018-02-10 11:25:00 +00:00
parent ed67e5c001
commit d6a0ae96c6
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -3753,6 +3753,10 @@ uint64_t Blockchain::prevalidate_block_hashes(uint64_t height, const std::list<c
if (height >= m_blocks_hash_of_hashes.size() * HASH_OF_HASHES_STEP) if (height >= m_blocks_hash_of_hashes.size() * HASH_OF_HASHES_STEP)
return hashes.size(); return hashes.size();
// if we're getting old blocks, we might have jettisoned the hashes already
if (m_blocks_hash_check.empty())
return hashes.size();
// find hashes encompassing those block // find hashes encompassing those block
size_t first_index = height / HASH_OF_HASHES_STEP; size_t first_index = height / HASH_OF_HASHES_STEP;
size_t last_index = (height + hashes.size() - 1) / HASH_OF_HASHES_STEP; size_t last_index = (height + hashes.size() - 1) / HASH_OF_HASHES_STEP;