wallet2: fix accessing unwound stack on exception
This commit is contained in:
parent
6bc0c7e685
commit
841a6acda2
|
@ -2744,13 +2744,16 @@ void wallet2::refresh(bool trusted_daemon, uint64_t start_height, uint64_t & blo
|
||||||
bool first = true;
|
bool first = true;
|
||||||
while(m_run.load(std::memory_order_relaxed))
|
while(m_run.load(std::memory_order_relaxed))
|
||||||
{
|
{
|
||||||
try
|
|
||||||
{
|
|
||||||
// pull the next set of blocks while we're processing the current one
|
|
||||||
uint64_t next_blocks_start_height;
|
uint64_t next_blocks_start_height;
|
||||||
std::vector<cryptonote::block_complete_entry> next_blocks;
|
std::vector<cryptonote::block_complete_entry> next_blocks;
|
||||||
std::vector<parsed_block> next_parsed_blocks;
|
std::vector<parsed_block> next_parsed_blocks;
|
||||||
bool error = false;
|
bool error;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// pull the next set of blocks while we're processing the current one
|
||||||
|
error = false;
|
||||||
|
next_blocks.clear();
|
||||||
|
next_parsed_blocks.clear();
|
||||||
added_blocks = 0;
|
added_blocks = 0;
|
||||||
if (!first && blocks.empty())
|
if (!first && blocks.empty())
|
||||||
{
|
{
|
||||||
|
@ -2788,6 +2791,11 @@ void wallet2::refresh(bool trusted_daemon, uint64_t start_height, uint64_t & blo
|
||||||
start_height = stop_height;
|
start_height = stop_height;
|
||||||
throw std::runtime_error(""); // loop again
|
throw std::runtime_error(""); // loop again
|
||||||
}
|
}
|
||||||
|
catch (const std::exception &e)
|
||||||
|
{
|
||||||
|
MERROR("Error parsing blocks: " << e.what());
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
blocks_fetched += added_blocks;
|
blocks_fetched += added_blocks;
|
||||||
}
|
}
|
||||||
waiter.wait(&tpool);
|
waiter.wait(&tpool);
|
||||||
|
|
Loading…
Reference in New Issue