Code

git-gui: Brown paper bag fix division by 0 in blame
authorShawn O. Pearce <spearce@spearce.org>
Wed, 4 Apr 2007 16:08:46 +0000 (12:08 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 4 Apr 2007 16:08:46 +0000 (12:08 -0400)
If we generate a blame status string before we have obtained
any annotation data at all from the input file, or if the input
file is empty, our total_lines will be 0.  This causes a division
by 0 error when we blindly divide by the 0 to compute the total
percentage of lines loaded.  Instead we should report 0% done.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh

index 60e79ca1b01bc8b057abe17ddab484699a7f5fdb..7cbc977ea29f2d0060476c3973df16c5abf6fe12 100755 (executable)
@@ -3604,12 +3604,14 @@ proc read_blame_incremental {fd w w_load w_cmit w_line w_file} {
 proc blame_incremental_status {w} {
        global blame_status blame_data
 
+       set have  $blame_data($w,blame_lines)
+       set total $blame_data($w,total_lines)
+       set pdone 0
+       if {$total} {set pdone [expr {100 * $have / $total}]}
+
        set blame_status($w) [format \
                "Loading annotations... %i of %i lines annotated (%2i%%)" \
-               $blame_data($w,blame_lines) \
-               $blame_data($w,total_lines) \
-               [expr {100 * $blame_data($w,blame_lines)
-                       / $blame_data($w,total_lines)}]]
+               $have $total $pdone]
 }
 
 proc blame_click {w w_cmit w_line w_file cur_w pos} {