aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-12-31 18:18:23 -0800
committerJunio C Hamano <junkio@cox.net>2006-12-31 18:55:28 -0800
commite90068a9046ccaf0bed82fd180b4748edbd5659a (patch)
treed1395f34dc5e00533e00caf27b10fd8c7569ab77
parentfbc9012307d3b2e1bcee84e4455b11e97f580e07 (diff)
downloadgit-e90068a9046ccaf0bed82fd180b4748edbd5659a.tar.gz
git-e90068a9046ccaf0bed82fd180b4748edbd5659a.tar.xz
i18n: do not leak 'encoding' header even when we cheat the conversion.
We special case the case where encoding recorded in the commit and the output encoding are the same and do not call iconv(). But we should drop 'encoding' header for this case as well for consistency. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--commit.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/commit.c b/commit.c
index afdf27eec..544e42629 100644
--- a/commit.c
+++ b/commit.c
@@ -679,11 +679,13 @@ static char *logmsg_reencode(const struct commit *commit)
else if (!*output_encoding)
return NULL;
encoding = get_header(commit, "encoding");
- if (!encoding || !strcmp(encoding, output_encoding)) {
- free(encoding);
+ if (!encoding)
return NULL;
- }
- out = reencode_string(commit->buffer, output_encoding, encoding);
+ if (!strcmp(encoding, output_encoding))
+ out = strdup(commit->buffer);
+ else
+ out = reencode_string(commit->buffer,
+ output_encoding, encoding);
if (out)
out = replace_encoding_header(out, output_encoding);