mirror of
https://github.com/git/git.git
synced 2024-11-25 19:04:18 +08:00
gitk: Fix bug causing the "can't unset idinlist(...)" error
Under some circumstances, having duplicate parents in a commit could trigger a "can't unset idinlist" Tcl error. This fixes the cause (the logic in layoutrows could end up putting the same commit into rowidlist twice) and also puts a catch around the unset to ignore the error. Thanks to Jeff King for coming up with a test script to generate a repo that shows the problem. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
3244729aac
commit
67a4f1a7f5
5
gitk
5
gitk
@ -2880,6 +2880,7 @@ proc layoutrows {row endrow last} {
|
||||
} elseif {!$idinlist($p)} {
|
||||
lappend oldolds $p
|
||||
}
|
||||
set idinlist($p) 1
|
||||
}
|
||||
set nev [expr {[llength $idlist] + [llength $newolds]
|
||||
+ [llength $oldolds] - $maxwidth + 1}]
|
||||
@ -2952,12 +2953,10 @@ proc layoutrows {row endrow last} {
|
||||
lset offs $col {}
|
||||
}
|
||||
foreach i $newolds {
|
||||
set idinlist($i) 1
|
||||
set idrowranges($i) $id
|
||||
}
|
||||
incr col $l
|
||||
foreach oid $oldolds {
|
||||
set idinlist($oid) 1
|
||||
set idlist [linsert $idlist $col $oid]
|
||||
set offs [linsert $offs $col $o]
|
||||
makeuparrow $oid $col $row $o
|
||||
@ -2998,7 +2997,7 @@ proc layouttail {} {
|
||||
set col [expr {[llength $idlist] - 1}]
|
||||
set id [lindex $idlist $col]
|
||||
addextraid $id $row
|
||||
unset idinlist($id)
|
||||
catch {unset idinlist($id)}
|
||||
lappend idrowranges($id) $id
|
||||
lappend rowrangelist $idrowranges($id)
|
||||
unset idrowranges($id)
|
||||
|
Loading…
Reference in New Issue
Block a user