From 1654ce5436265e914965139d3c167678d5c9d7b1 Mon Sep 17 00:00:00 2001 From: Peter Conrad Date: Mon, 31 Jul 2017 20:24:04 +0200 Subject: [PATCH] Prevent unsigned integer underflow --- libraries/chain/db_management.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libraries/chain/db_management.cpp b/libraries/chain/db_management.cpp index 0f678910..c2ffbf0a 100644 --- a/libraries/chain/db_management.cpp +++ b/libraries/chain/db_management.cpp @@ -60,12 +60,15 @@ void database::reindex( fc::path data_dir ) ilog( "reindexing blockchain" ); auto start = fc::time_point::now(); const auto last_block_num = last_block->block_num(); - uint32_t flush_point = last_block_num - 10000; - uint32_t undo_point = last_block_num - 50; + uint32_t flush_point = last_block_num < 10000 ? 0 : last_block_num - 10000; + uint32_t undo_point = last_block_num < 50 ? 0 : last_block_num - 50; ilog( "Replaying blocks, starting at ${next}...", ("next",head_block_num() + 1) ); if( head_block_num() >= undo_point ) - _fork_db.start_block( *fetch_block_by_number( head_block_num() ) ); + { + if( head_block_num() > 0 ) + _fork_db.start_block( *fetch_block_by_number( head_block_num() ) ); + } else { // Right now, we leave undo_db enabled when replaying when the bookie plugin is