gitk: Remove closed file descriptors from $blobdifffd
[gitweb.git] / gitk
diff --git a/gitk b/gitk
index 08ff7ceb2bddd7d12df43ef0f5fc847d7b3e8bb4..e037a755a513ded085ff7c81551e935085cf8d26 100755 (executable)
--- 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}]