mirror of
https://github.com/p-ranav/indicators.git
synced 2025-12-16 04:18:51 +08:00
Merge pull request #78 from csparker247/77-time-remaining-overflow
Mitigate overflow when calculating ETA
This commit is contained in:
@@ -200,7 +200,10 @@ private:
|
||||
|
||||
if (saved_start_time) {
|
||||
auto eta = std::chrono::nanoseconds(
|
||||
progress_ > 0 ? static_cast<long long>(elapsed.count() * max_progress / progress_) : 0);
|
||||
progress_ > 0
|
||||
? static_cast<long long>(std::ceil(float(elapsed.count()) *
|
||||
max_progress / progress_))
|
||||
: 0);
|
||||
auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta);
|
||||
details::write_duration(os, remaining);
|
||||
} else {
|
||||
|
||||
@@ -255,9 +255,10 @@ private:
|
||||
|
||||
if (saved_start_time) {
|
||||
auto eta = std::chrono::nanoseconds(
|
||||
progress_ > 0 ? static_cast<long long>(elapsed_.count() *
|
||||
max_progress / progress_)
|
||||
: 0);
|
||||
progress_ > 0
|
||||
? static_cast<long long>(std::ceil(float(elapsed_.count()) *
|
||||
max_progress / progress_))
|
||||
: 0);
|
||||
auto remaining = eta > elapsed_ ? (eta - elapsed_) : (elapsed_ - eta);
|
||||
details::write_duration(os, remaining);
|
||||
} else {
|
||||
|
||||
@@ -195,7 +195,10 @@ public:
|
||||
else
|
||||
os << " [";
|
||||
auto eta = std::chrono::nanoseconds(
|
||||
progress_ > 0 ? static_cast<long long>(elapsed.count() * max_progress / progress_) : 0);
|
||||
progress_ > 0
|
||||
? static_cast<long long>(std::ceil(float(elapsed.count()) *
|
||||
max_progress / progress_))
|
||||
: 0);
|
||||
auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta);
|
||||
details::write_duration(os, remaining);
|
||||
os << "]";
|
||||
|
||||
@@ -1788,9 +1788,10 @@ private:
|
||||
|
||||
if (saved_start_time) {
|
||||
auto eta = std::chrono::nanoseconds(
|
||||
progress_ > 0 ? static_cast<long long>(elapsed_.count() *
|
||||
max_progress / progress_)
|
||||
: 0);
|
||||
progress_ > 0
|
||||
? static_cast<long long>(std::ceil(float(elapsed_.count()) *
|
||||
max_progress / progress_))
|
||||
: 0);
|
||||
auto remaining = eta > elapsed_ ? (eta - elapsed_) : (elapsed_ - eta);
|
||||
details::write_duration(os, remaining);
|
||||
} else {
|
||||
@@ -2089,7 +2090,10 @@ private:
|
||||
|
||||
if (saved_start_time) {
|
||||
auto eta = std::chrono::nanoseconds(
|
||||
progress_ > 0 ? static_cast<long long>(elapsed.count() * max_progress / progress_) : 0);
|
||||
progress_ > 0
|
||||
? static_cast<long long>(std::ceil(float(elapsed.count()) *
|
||||
max_progress / progress_))
|
||||
: 0);
|
||||
auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta);
|
||||
details::write_duration(os, remaining);
|
||||
} else {
|
||||
@@ -2796,7 +2800,10 @@ public:
|
||||
else
|
||||
os << " [";
|
||||
auto eta = std::chrono::nanoseconds(
|
||||
progress_ > 0 ? static_cast<long long>(elapsed.count() * max_progress / progress_) : 0);
|
||||
progress_ > 0
|
||||
? static_cast<long long>(std::ceil(float(elapsed.count()) *
|
||||
max_progress / progress_))
|
||||
: 0);
|
||||
auto remaining = eta > elapsed ? (eta - elapsed) : (elapsed - eta);
|
||||
details::write_duration(os, remaining);
|
||||
os << "]";
|
||||
|
||||
Reference in New Issue
Block a user