>From 0a463fcd977dc9558835c373e24a095e35ca3c82 Mon Sep 17 00:00:00 2001 From: Markus Hitter <mah@xxxxxxxxxxx> Date: Mon, 7 Nov 2016 16:01:17 +0100 Subject: [PATCH 2/3] gitk: remove closed file descriptors from $blobdifffd One shouldn't have descriptors of already closed files around. The first idea to deal with this (previously) ever growing array was to remove it entirely, but it's needed to detect start of a new diff with ths old diff not yet done. This happens when a user clicks on the same commit in the commit list repeatedly without delay. Signed-off-by: Markus Hitter <mah@xxxxxxxxxxx> --- gitk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gitk b/gitk index 8654e29..518a4ce 100755 --- a/gitk +++ b/gitk @@ -8069,7 +8069,11 @@ proc getblobdiffline {bdf ids} { $ctext conf -state normal while {[incr nr] <= 1000 && [gets $bdf line] >= 0} { if {$ids != $diffids || $bdf != $blobdifffd($ids)} { + # Older diff read. Abort it. catch {close $bdf} + if {$ids != $diffids} { + array unset blobdifffd $ids + } return 0 } parseblobdiffline $ids $line @@ -8078,6 +8082,7 @@ proc getblobdiffline {bdf ids} { blobdiffmaybeseehere [eof $bdf] if {[eof $bdf]} { catch {close $bdf} + array unset blobdifffd $ids return 0 } return [expr {$nr >= 1000? 2: 1}] -- 2.9.3