streaming: cast the progress to a float before formatting it

before this change, we format a `long` using `{:f}`. fmtlib would
throw an exception when actually formatting it.

so, let's make the percentage a float before formatting it.

Fixes #14587
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>

Closes #14588
This commit is contained in:
Kefu Chai
2023-07-09 23:37:21 +08:00
committed by Avi Kivity
parent 894039d444
commit 1eb76d93b7

View File

@@ -14,8 +14,9 @@ namespace streaming {
std::ostream& operator<<(std::ostream& os, const progress_info& x) {
sstring dir = x.dir == progress_info::direction::OUT ? "sent to " : "received from ";
return os << format("{} {:d}/({:f}%) {} {}", x.file_name, x.current_bytes,
x.current_bytes * 100 / x.total_bytes, dir, x.peer);
fmt::print(os, "{} {:d}/({:f}%) {} {}", x.file_name, x.current_bytes,
x.current_bytes * 100.F / x.total_bytes, dir, x.peer);
return os;
}
}