diff options
author | Paul Mackerras <paulus@samba.org> | 2005-06-27 20:04:26 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-06-27 20:04:26 +1000 |
commit | 7e952e797c98fca1853463247bcaf3b8d58bc36c (patch) | |
tree | 149a6ef18a269ef8dbcf9df40886d1f637eae0e7 /gitk | |
parent | 74daedb62cd2aa0420ee7fac5180246508867679 (diff) | |
download | git-7e952e797c98fca1853463247bcaf3b8d58bc36c.tar.gz git-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-x | gitk | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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] |