The pad function is supposed to pad a string to a width. Under some
circumstances, the width parameter could be negative resulting in a
call to String.sub such as:
String.sub str 0 (-1)
which caused an exception to be thrown and not caught, causing
virt-top to exit. Fix the pad function to return an empty string if
width <= 0 instead of throwing an exception.
See also:
https://bugzilla.redhat.com/show_bug.cgi?id=634435
(* Pad a string to the full width with spaces. If too long, truncate. *)
let pad width str =
- let n = String.length str in
- if n = width then str
- else if n > width then String.sub str 0 width
- else (* if n < width then *) str ^ String.make (width-n) ' '
+ if width <= 0 then ""
+ else (
+ let n = String.length str in
+ if n = width then str
+ else if n > width then String.sub str 0 width
+ else (* if n < width then *) str ^ String.make (width-n) ' '
+ )
module Show = struct
(* Show a percentage in 4 chars. *)