From 0748f41eb83194dbc310fe47b4948f611ac5b3a2 Mon Sep 17 00:00:00 2001 From: Markus Hitter Date: Mon, 7 Nov 2016 16:01:17 +0100 Subject: [PATCH] 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 Signed-off-by: Paul Mackerras --- gitk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gitk b/gitk index 08ff7ceb2b..e037a755a5 100755 --- a/gitk +++ b/gitk @@ -8073,7 +8073,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 @@ -8082,6 +8086,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.43.2