mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
commit: fix pretty-printing of messages with "\nencoding "
The function replace_encoding_header is given the whole commit buffer, including the commit message. When looking for the encoding header, if none was found in the header, it would locate any line in the commit message matching "\nencoding " and remove it. Instead, we now make sure to search only to the end of the header. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
75c962c99a
commit
d0e50cb4cb
7
commit.c
7
commit.c
|
@ -644,6 +644,7 @@ static char *get_header(const struct commit *commit, const char *key)
|
||||||
static char *replace_encoding_header(char *buf, char *encoding)
|
static char *replace_encoding_header(char *buf, char *encoding)
|
||||||
{
|
{
|
||||||
char *encoding_header = strstr(buf, "\nencoding ");
|
char *encoding_header = strstr(buf, "\nencoding ");
|
||||||
|
char *header_end = strstr(buf, "\n\n");
|
||||||
char *end_of_encoding_header;
|
char *end_of_encoding_header;
|
||||||
int encoding_header_pos;
|
int encoding_header_pos;
|
||||||
int encoding_header_len;
|
int encoding_header_len;
|
||||||
|
@ -651,8 +652,10 @@ static char *replace_encoding_header(char *buf, char *encoding)
|
||||||
int need_len;
|
int need_len;
|
||||||
int buflen = strlen(buf) + 1;
|
int buflen = strlen(buf) + 1;
|
||||||
|
|
||||||
if (!encoding_header)
|
if (!header_end)
|
||||||
return buf; /* should not happen but be defensive */
|
header_end = buf + buflen;
|
||||||
|
if (!encoding_header || encoding_header >= header_end)
|
||||||
|
return buf;
|
||||||
encoding_header++;
|
encoding_header++;
|
||||||
end_of_encoding_header = strchr(encoding_header, '\n');
|
end_of_encoding_header = strchr(encoding_header, '\n');
|
||||||
if (!end_of_encoding_header)
|
if (!end_of_encoding_header)
|
||||||
|
|
Loading…
Reference in a new issue