diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2011-01-06 12:38:24 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2011-01-06 12:38:24 +0000 |
commit | 0b94aeb460d42eea16bf942dd0892b8ebf63877b (patch) | |
tree | a7740145f0872ed1cd314c89cef5c9158d218970 | |
parent | 80357d3ee11d22a649cfefb1786f5ae7148b53a1 (diff) | |
download | virt-top-0b94aeb460d42eea16bf942dd0892b8ebf63877b.tar.gz virt-top-0b94aeb460d42eea16bf942dd0892b8ebf63877b.tar.xz virt-top-0b94aeb460d42eea16bf942dd0892b8ebf63877b.zip |
Fix pad function to work for negative widths (RHBZ#634435).
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
-rw-r--r-- | virt-top/virt_top_utils.ml | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/virt-top/virt_top_utils.ml b/virt-top/virt_top_utils.ml index f858e0e..c5dc97d 100644 --- a/virt-top/virt_top_utils.ml +++ b/virt-top/virt_top_utils.ml @@ -109,10 +109,13 @@ let read_config_file filename = (* 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. *) |