From 2712a7ffdfc8595f670e465bc396d927c7a35f42 Mon Sep 17 00:00:00 2001 From: Isaac Parker Date: Sat, 9 Nov 2019 19:50:36 -0800 Subject: [PATCH] Avoid dividing by zero --- src/lib.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index cb8a1ba..9e99a6a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -429,7 +429,10 @@ fn fmt_bar( bytes : &Vec, max_bytes : u64, width : usize, ascii_flag : bool let _ = bytesi.next(); let mut total = &max_bytes; let mut part = bytesi.next().unwrap(); - let mut bars = ( part * width ) / total; + let mut bars = match total { + 0 => 0, + _ => (part * width) / total, + }; let mut pos = width - bars; let block_char = if ascii_flag { vec![ ' ', '#' ] } else { vec![ ' ', '░', '▒', '▓', '█' ] }; @@ -451,7 +454,13 @@ fn fmt_bar( bytes : &Vec, max_bytes : u64, width : usize, ascii_flag : bool str.push( block_char[chr] ); } - format!( "{}│ {:3}%", str, ( bytes[bytes.len()-1] * 100 ) / bytes[bytes.len()-2] ) + let nominator = bytes[bytes.len()-1] * 100; + let denominator = bytes[bytes.len()-2]; + let result = match denominator { + 0 => 0, + _ => nominator/denominator, + }; + format!( "{}│ {:3}%", str, result ) } fn fmt_size_str( bytes : u64, flag : bool ) -> String {