diff options
author | Jeff King <peff@peff.net> | 2013-01-26 04:44:06 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-01-26 13:28:21 -0800 |
commit | dd0d388c44c28ebc021a24eeddc60287d4ea249c (patch) | |
tree | c2899c33f7bebae72fcc57d5d120a781a63b8ac5 /builtin/blame.c | |
parent | 200ebe362cda2a520219f998d4b2c44767992bdb (diff) | |
download | git-dd0d388c44c28ebc021a24eeddc60287d4ea249c.tar.gz |
logmsg_reencode: never return NULL
The logmsg_reencode function will return the reencoded
commit buffer, or NULL if reencoding failed or no reencoding
was necessary. Since every caller then ends up checking for NULL
and just using the commit's original buffer, anyway, we can
be a bit more helpful and just return that buffer when we
would have returned NULL.
Since the resulting string may or may not need to be freed,
we introduce a logmsg_free, which checks whether the buffer
came from the commit object or not (callers either
implemented the same check already, or kept two separate
pointers, one to mark the buffer to be used, and one for the
to-be-freed string).
Pushing this logic into logmsg_* simplifies the callers, and
will let future patches lazily load the commit buffer in a
single place.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/blame.c')
-rw-r--r-- | builtin/blame.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/builtin/blame.c b/builtin/blame.c index b431ba3209..962e4e3cd1 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -1420,7 +1420,7 @@ static void get_commit_info(struct commit *commit, { int len; const char *subject, *encoding; - char *reencoded, *message; + char *message; commit_info_init(ret); @@ -1438,14 +1438,13 @@ static void get_commit_info(struct commit *commit, sha1_to_hex(commit->object.sha1)); } encoding = get_log_output_encoding(); - reencoded = logmsg_reencode(commit, encoding); - message = reencoded ? reencoded : commit->buffer; + message = logmsg_reencode(commit, encoding); get_ac_line(message, "\nauthor ", &ret->author, &ret->author_mail, &ret->author_time, &ret->author_tz); if (!detailed) { - free(reencoded); + logmsg_free(message, commit); return; } @@ -1459,7 +1458,7 @@ static void get_commit_info(struct commit *commit, else strbuf_addf(&ret->summary, "(%s)", sha1_to_hex(commit->object.sha1)); - free(reencoded); + logmsg_free(message, commit); } /* |