From ed51c2a75178bde30fa59b1bca4ce9090a9c4349 Mon Sep 17 00:00:00 2001 From: Xoris Date: Sat, 15 Jun 2024 10:49:23 +0800 Subject: fix divide 0 error when caculating disk usage percentage (#791) --- src/freebsd/btop_collect.cpp | 9 +++++++-- src/linux/btop_collect.cpp | 9 +++++++-- src/openbsd/btop_collect.cpp | 9 +++++++-- src/osx/btop_collect.cpp | 9 +++++++-- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/freebsd/btop_collect.cpp b/src/freebsd/btop_collect.cpp index b4034c7..29e54bf 100644 --- a/src/freebsd/btop_collect.cpp +++ b/src/freebsd/btop_collect.cpp @@ -771,8 +771,13 @@ namespace Mem { disk.total = vfs.f_blocks * vfs.f_frsize; disk.free = vfs.f_bfree * vfs.f_frsize; disk.used = disk.total - disk.free; - disk.used_percent = round((double)disk.used * 100 / disk.total); - disk.free_percent = 100 - disk.used_percent; + if (disk.total != 0) { + disk.used_percent = round((double)disk.used * 100 / disk.total); + disk.free_percent = 100 - disk.used_percent; + } else { + disk.used_percent = 0; + disk.free_percent = 0; + } } //? Setup disks order in UI and add swap if enabled diff --git a/src/linux/btop_collect.cpp b/src/linux/btop_collect.cpp index d9f571f..0541357 100644 --- a/src/linux/btop_collect.cpp +++ b/src/linux/btop_collect.cpp @@ -1936,8 +1936,13 @@ namespace Mem { disk.total = vfs.f_blocks * vfs.f_frsize; disk.free = (free_priv ? vfs.f_bfree : vfs.f_bavail) * vfs.f_frsize; disk.used = disk.total - disk.free; - disk.used_percent = round((double)disk.used * 100 / disk.total); - disk.free_percent = 100 - disk.used_percent; + if (disk.total != 0) { + disk.used_percent = round((double)disk.used * 100 / disk.total); + disk.free_percent = 100 - disk.used_percent; + } else { + disk.used_percent = 0; + disk.free_percent = 0; + } return pair{disk, -1}; }); ++it; diff --git a/src/openbsd/btop_collect.cpp b/src/openbsd/btop_collect.cpp index a8c395e..480b834 100644 --- a/src/openbsd/btop_collect.cpp +++ b/src/openbsd/btop_collect.cpp @@ -723,8 +723,13 @@ namespace Mem { disk.total = vfs.f_blocks * vfs.f_frsize; disk.free = vfs.f_bfree * vfs.f_frsize; disk.used = disk.total - disk.free; - disk.used_percent = round((double)disk.used * 100 / disk.total); - disk.free_percent = 100 - disk.used_percent; + if (disk.total != 0) { + disk.used_percent = round((double)disk.used * 100 / disk.total); + disk.free_percent = 100 - disk.used_percent; + } else { + disk.used_percent = 0; + disk.free_percent = 0; + } } //? Setup disks order in UI and add swap if enabled diff --git a/src/osx/btop_collect.cpp b/src/osx/btop_collect.cpp index 8c65705..4d54e32 100644 --- a/src/osx/btop_collect.cpp +++ b/src/osx/btop_collect.cpp @@ -795,8 +795,13 @@ namespace Mem { disk.total = vfs.f_blocks * vfs.f_frsize; disk.free = vfs.f_bfree * vfs.f_frsize; disk.used = disk.total - disk.free; - disk.used_percent = round((double)disk.used * 100 / disk.total); - disk.free_percent = 100 - disk.used_percent; + if (disk.total != 0) { + disk.used_percent = round((double)disk.used * 100 / disk.total); + disk.free_percent = 100 - disk.used_percent; + } else { + disk.used_percent = 0; + disk.free_percent = 0; + } } //? Setup disks order in UI and add swap if enabled -- cgit v1.2.3