From 7e952e797c98fca1853463247bcaf3b8d58bc36c Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Mon, 27 Jun 2005 20:04:26 +1000 Subject: [PATCH] Fix a bug where we would corrupt the stuff read from git-rev-list. If we have a very long commit message, and we end up getting a bufferfull of data from git-rev-list that all belongs to one commit, we ended up throwing away the data from a previous read that should have been included. The result was a error message about not being able to parse the output of git-rev-list. Also, if the git-rev-list output that we can't parse is long, only put the first 80 chars in the error message. Otherwise we end up with an enormous error window. --- gitk | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gitk b/gitk index 0e95d9d71..e72c9c7bd 100755 --- a/gitk +++ b/gitk @@ -81,16 +81,21 @@ to allow selection of commits to be displayed.)} while 1 { set i [string first "\0" $stuff $start] if {$i < 0} { - set leftover [string range $stuff $start end] + append leftover [string range $stuff $start end] return } set cmit [string range $stuff $start [expr {$i - 1}]] if {$start == 0} { set cmit "$leftover$cmit" + set leftover {} } set start [expr {$i + 1}] if {![regexp {^([0-9a-f]{40})\n} $cmit match id]} { - error_popup "Can't parse git-rev-list output: {$cmit}" + set shortcmit $cmit + if {[string length $shortcmit] > 80} { + set shortcmit "[string range $shortcmit 0 80]..." + } + error_popup "Can't parse git-rev-list output: {$shortcmit}" exit 1 } set cmit [string range $cmit 41 end] -- 2.30.2