From 2b418fb506ee59c356bc4f5336752d7b93f3309e Mon Sep 17 00:00:00 2001 From: Mahmoud Al-Qudsi Date: Thu, 19 Mar 2020 20:03:52 -0500 Subject: [PATCH] Fix division by zero when memory data is not available (#85) The total memory values may be zero when bottom is run on an unsupported (or not-fully-supported) platform. The previous behavior resulted in a NaN value for the memory datapoints, which was passed through to tui-rs which ultimately panicked when attempting to graph the memory widget. --- src/app/data_farmer.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/app/data_farmer.rs b/src/app/data_farmer.rs index 43fe9cba..b8cd06d5 100644 --- a/src/app/data_farmer.rs +++ b/src/app/data_farmer.rs @@ -144,9 +144,10 @@ impl DataCollection { &mut self, harvested_data: &Data, harvested_time: Instant, new_entry: &mut TimedData, ) { // Memory - let mem_percent = harvested_data.memory.mem_used_in_mb as f64 - / harvested_data.memory.mem_total_in_mb as f64 - * 100.0; + let mem_percent = match harvested_data.memory.mem_total_in_mb { + 0 => 0f64, + total => (harvested_data.memory.mem_used_in_mb as f64) / (total as f64) * 100.0, + }; let mem_joining_pts = if let Some((time, last_pt)) = self.timed_data_vec.last() { generate_joining_points(*time, last_pt.mem_data.0, harvested_time, mem_percent) } else { @@ -157,9 +158,10 @@ impl DataCollection { // Swap if harvested_data.swap.mem_total_in_mb > 0 { - let swap_percent = harvested_data.swap.mem_used_in_mb as f64 - / harvested_data.swap.mem_total_in_mb as f64 - * 100.0; + let swap_percent = match harvested_data.swap.mem_total_in_mb { + 0 => 0f64, + total => (harvested_data.swap.mem_used_in_mb as f64) / (total as f64) * 100.0, + }; let swap_joining_pt = if let Some((time, last_pt)) = self.timed_data_vec.last() { generate_joining_points(*time, last_pt.swap_data.0, harvested_time, swap_percent) } else {