From: Paul Mackerras Date: Sat, 12 Jan 2008 10:46:31 +0000 (+1100) Subject: gitk: Fix a bug in make_disporder X-Git-Tag: v1.5.6-rc0~20^2~25 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=17529cf9bc50e8b2bc0ea930a966b8b47056853e;p=git.git gitk: Fix a bug in make_disporder The make_disporder function has an optimization where it assumed that if displayorder was already long enough and the first entry in it for a particular arc was non-null, then the whole arc was present. This turns out not to be true in some circumstances, since we can add a commit to an arc (which truncates displayorder to the previous end of that arc), then call make_disporder for later arcs (which will pad displayorder with null elements), then call make_disporder for the first arc - which won't update the null elements. This fixes it by changing the optimization to check the last element for the arc instead of the first. Signed-off-by: Paul Mackerras --- diff --git a/gitk b/gitk index 97d1be092..8699e1bb4 100755 --- a/gitk +++ b/gitk @@ -853,7 +853,7 @@ proc make_disporder {start end} { lappend displayorder $id lappend parentlist $parents($curview,$id) } - } elseif {[lindex $displayorder $r] eq {}} { + } elseif {[lindex $displayorder [expr {$r + $al - 1}]] eq {}} { set i $r foreach id $varccommits($curview,$a) { lset displayorder $i $id