From ebab03ab6618604c6026a25dd356fdb1cb77b351 Mon Sep 17 00:00:00 2001 From: Abit Date: Sat, 22 Aug 2020 23:40:47 +0200 Subject: [PATCH 1/2] Fix integer overflow in replay percent calculation --- libraries/chain/db_management.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/chain/db_management.cpp b/libraries/chain/db_management.cpp index 9ca657ef6f..8b054aa25e 100644 --- a/libraries/chain/db_management.cpp +++ b/libraries/chain/db_management.cpp @@ -126,7 +126,7 @@ void database::reindex( fc::path data_dir ) std::stringstream bysize; std::stringstream bynum; bysize << std::fixed << std::setprecision(5) << double(std::get<0>(blocks.front())) / total_block_size * 100; - bynum << std::fixed << std::setprecision(5) << double(i*100)/last_block_num; + bynum << std::fixed << std::setprecision(5) << double(i)*100/last_block_num; ilog( " [by size: ${size}% ${processed} of ${total}] [by num: ${num}% ${i} of ${last}]", ("size", bysize.str()) From a6ed3c3e556d2ba812e99bcbcb06faaf881ccbe5 Mon Sep 17 00:00:00 2001 From: Abit Date: Sat, 22 Aug 2020 23:47:44 +0200 Subject: [PATCH 2/2] Fix size calculation in replay status message --- libraries/chain/db_management.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/chain/db_management.cpp b/libraries/chain/db_management.cpp index 8b054aa25e..c71d85d3d9 100644 --- a/libraries/chain/db_management.cpp +++ b/libraries/chain/db_management.cpp @@ -125,12 +125,15 @@ void database::reindex( fc::path data_dir ) { std::stringstream bysize; std::stringstream bynum; - bysize << std::fixed << std::setprecision(5) << double(std::get<0>(blocks.front())) / total_block_size * 100; + size_t current_pos = std::get<0>(blocks.front()); + if( current_pos > total_block_size ) + total_block_size = current_pos; + bysize << std::fixed << std::setprecision(5) << double(current_pos) / total_block_size * 100; bynum << std::fixed << std::setprecision(5) << double(i)*100/last_block_num; ilog( " [by size: ${size}% ${processed} of ${total}] [by num: ${num}% ${i} of ${last}]", ("size", bysize.str()) - ("processed", std::get<0>(blocks.front())) + ("processed", current_pos) ("total", total_block_size) ("num", bynum.str()) ("i", i)