summaryrefslogtreecommitdiff
path: root/gitk
diff options
context:
space:
mode:
authorLibravatar Paul Mackerras <paulus@samba.org>2005-06-27 20:04:26 +1000
committerLibravatar Paul Mackerras <paulus@samba.org>2005-06-27 20:04:26 +1000
commit7e952e797c98fca1853463247bcaf3b8d58bc36c (patch)
tree149a6ef18a269ef8dbcf9df40886d1f637eae0e7 /gitk
parentAdd a menu entry for generating a patch between any two commits. (diff)
downloadtgif-7e952e797c98fca1853463247bcaf3b8d58bc36c.tar.xz
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.
Diffstat (limited to 'gitk')
-rwxr-xr-xgitk9
1 files changed, 7 insertions, 2 deletions
diff --git a/gitk b/gitk
index 0e95d9d711..e72c9c7bdb 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]