There seems to be no point to search for several origins at once. I doubt it is even fully working (because there is one blameinst), but blamestuff for some reason is an array. Also, it is not cleaned after blame is completed Signed-off-by: Max Kirillov <max@xxxxxxxxxx> --- gitk | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gitk b/gitk index 90764e8..dfac4fd 100755 --- a/gitk +++ b/gitk @@ -3815,17 +3815,18 @@ proc show_line_source {} { nowbusy blaming [mc "Searching"] fconfigure $f -blocking 0 set i [reg_instance $f] - set blamestuff($i) {} + set blamestuff {} set blameinst $i filerun $f [list read_line_source $f $i] } proc stopblaming {} { - global blameinst + global blameinst blamestuff if {[info exists blameinst]} { stop_instance $blameinst unset blameinst + unset blamestuff notbusy blaming } } @@ -3834,7 +3835,7 @@ proc read_line_source {fd inst} { global blamestuff curview commfd blameinst nullid nullid2 while {[gets $fd line] >= 0} { - lappend blamestuff($inst) $line + lappend blamestuff $line } if {![eof $fd]} { return 1 @@ -3845,17 +3846,18 @@ proc read_line_source {fd inst} { fconfigure $fd -blocking 1 if {[catch {close $fd} err]} { error_popup [mc "Error running git blame: %s" $err] + unset blamestuff return 0 } set fname {} - set line [split [lindex $blamestuff($inst) 0] " "] + set line [split [lindex $blamestuff 0] " "] set id [lindex $line 0] set lnum [lindex $line 1] if {[string length $id] == 40 && [string is xdigit $id] && [string is digit -strict $lnum]} { # look for "filename" line - foreach l $blamestuff($inst) { + foreach l $blamestuff { if {[string match "filename *" $l]} { set fname [string range $l 9 end] break @@ -3878,6 +3880,7 @@ proc read_line_source {fd inst} { } else { puts "oops couldn't parse git blame output" } + unset blamestuff return 0 } -- 1.8.5.2.421.g4cdf8d0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html