Code

gitk: Fix bug where arcs could get lost
authorPaul Mackerras <paulus@samba.org>
Sun, 17 Feb 2008 23:44:33 +0000 (10:44 +1100)
committerPaul Mackerras <paulus@samba.org>
Sun, 17 Feb 2008 23:44:33 +0000 (10:44 +1100)
Because we weren't fixing up vlastins when moving an arc from one
place to another, it was possible for us later to decide to move
an arc to the wrong place, and end up with an arc disconnected from
the rest of the graph.  This fixes it by updating vlastins when
necessary.

Signed-off-by: Paul Mackerras <paulus@samba.org>
gitk

diff --git a/gitk b/gitk
index 1dd73f7d8563dd14014c037938bff9358665020b..a50ef79479213c9a34ad54e538e56fa802c1a1a6 100755 (executable)
--- a/gitk
+++ b/gitk
@@ -415,11 +415,12 @@ proc splitvarc {p v} {
        set varcid($v,$id) $na
     }
     lappend vdownptr($v) [lindex $vdownptr($v) $oa]
+    lappend vlastins($v) [lindex $vlastins($v) $oa]
     lset vdownptr($v) $oa $na
+    lset vlastins($v) $oa 0
     lappend vupptr($v) $oa
     lappend vleftptr($v) 0
     lappend vbackptr($v) 0
-    lappend vlastins($v) 0
     for {set b [lindex $vdownptr($v) $na]} {$b != 0} {set b [lindex $vleftptr($v) $b]} {
        lset vupptr($v) $b $na
     }
@@ -513,6 +514,9 @@ proc renumbervarc {a v} {
            if {$d != 0} {
                lset vbackptr($v) $d $c
            }
+           if {[lindex $vlastins($v) $b] == $a} {
+               lset vlastins($v) $b $c
+           }
            lset vupptr($v) $a $ka
            set c [lindex $vlastins($v) $ka]
            if {$c == 0 || \