X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=diff-tree.c;h=868404f7c4003f162b16585f1e8db904b8ed4551;hb=3258c902e7f286d770ed6fba9219973b2b5bc01d;hp=233a25066818b49c94112f6f2680c6f6d7c881f8;hpb=da196b603e665a81943e5df4e8daa3d981846624;p=git.git diff --git a/diff-tree.c b/diff-tree.c index 233a2506..868404f7 100644 --- a/diff-tree.c +++ b/diff-tree.c @@ -332,7 +332,7 @@ static int add_author_info(char *buf, const char *line, int len) static char *generate_header(const char *commit, const char *parent, const char *msg, unsigned long len) { - static char this_header[1000]; + static char this_header[16384]; int offset; offset = sprintf(this_header, "%s%s (from %s)\n", header_prefix, commit, parent); @@ -345,8 +345,16 @@ static char *generate_header(const char *commit, const char *parent, const char if (!linelen) break; - if (offset + linelen + 10 > sizeof(this_header)) + + /* + * We want some slop for indentation and a possible + * final "...". Thus the "+ 20". + */ + if (offset + linelen + 20 > sizeof(this_header)) { + memcpy(this_header + offset, " ...\n", 8); + offset += 8; break; + } msg += linelen; len -= linelen; @@ -361,7 +369,12 @@ static char *generate_header(const char *commit, const char *parent, const char memcpy(this_header + offset + 4, line, linelen); offset += linelen + 4; } - this_header[offset++] = '\n'; + /* Make sure there is an EOLN */ + if (this_header[offset-1] != '\n') + this_header[offset++] = '\n'; + /* Add _another_ EOLN if we are doing diff output */ + if (!silent) + this_header[offset++] = '\n'; this_header[offset] = 0; }