summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-01-06 12:38:24 +0000
committerRichard W.M. Jones <rjones@redhat.com>2011-01-06 12:38:24 +0000
commit0b94aeb460d42eea16bf942dd0892b8ebf63877b (patch)
treea7740145f0872ed1cd314c89cef5c9158d218970
parent80357d3ee11d22a649cfefb1786f5ae7148b53a1 (diff)
downloadvirt-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.ml11
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. *)