fs: Fix incorrect size report on 32bit machines (#1699)
Cast before multiplication to avoid overflow. Fixes #743
This commit is contained in:
parent
5995a8dace
commit
82b9ea8a09
1 changed files with 3 additions and 3 deletions
|
@ -97,10 +97,10 @@ namespace modules {
|
|||
mount->fsname = details->at(MOUNTINFO_FSNAME);
|
||||
|
||||
// see: http://en.cppreference.com/w/cpp/filesystem/space
|
||||
mount->bytes_total = buffer.f_frsize * buffer.f_blocks;
|
||||
mount->bytes_free = buffer.f_frsize * buffer.f_bfree;
|
||||
mount->bytes_total = static_cast<uint64_t>(buffer.f_frsize) * static_cast<uint64_t>(buffer.f_blocks);
|
||||
mount->bytes_free = static_cast<uint64_t>(buffer.f_frsize) * static_cast<uint64_t>(buffer.f_bfree);
|
||||
mount->bytes_used = mount->bytes_total - mount->bytes_free;
|
||||
mount->bytes_avail = buffer.f_frsize * buffer.f_bavail;
|
||||
mount->bytes_avail = static_cast<uint64_t>(buffer.f_frsize) * static_cast<uint64_t>(buffer.f_bavail);
|
||||
|
||||
mount->percentage_free = math_util::percentage<double>(mount->bytes_avail, mount->bytes_used + mount->bytes_avail);
|
||||
mount->percentage_used = math_util::percentage<double>(mount->bytes_used, mount->bytes_used + mount->bytes_avail);
|
||||
|
|
Loading…
Reference in a new issue