diff options
| author | Jeff King <peff@peff.net> | 2014-06-10 17:41:02 -0400 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2014-06-13 12:08:17 -0700 | 
| commit | ba41c1c93fd9109eae954f75a8cb8e32c3e29530 (patch) | |
| tree | d4d5e92c25847777b54aabebeaf5cd6b6806b19f /commit.c | |
| parent | a97934d8205772ffd2a528a9e970af7dec725012 (diff) | |
| download | git-ba41c1c93fd9109eae954f75a8cb8e32c3e29530.tar.gz | |
use get_commit_buffer to avoid duplicate code
For both of these sites, we already do the "fallback to
read_sha1_file" trick. But we can shorten the code by just
using get_commit_buffer.
Note that the error cases are slightly different when
read_sha1_file fails. get_commit_buffer will die() if the
object cannot be loaded, or is a non-commit.
For get_sha1_oneline, this will almost certainly never
happen, as we will have just called parse_object (and if it
does, it's probably worth complaining about).
For record_author_date, the new behavior is probably better;
we notify the user of the error instead of silently ignoring
it. And because it's used only for sorting by author-date,
somebody examining a corrupt repo can fallback to the
regular traversal order.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'commit.c')
| -rw-r--r-- | commit.c | 16 | 
1 files changed, 3 insertions, 13 deletions
| @@ -583,22 +583,12 @@ static void record_author_date(struct author_date_slab *author_date,  			       struct commit *commit)  {  	const char *buf, *line_end, *ident_line; -	char *buffer = NULL; +	const char *buffer = get_commit_buffer(commit);  	struct ident_split ident;  	char *date_end;  	unsigned long date; -	if (!commit->buffer) { -		unsigned long size; -		enum object_type type; -		buffer = read_sha1_file(commit->object.sha1, &type, &size); -		if (!buffer) -			return; -	} - -	for (buf = commit->buffer ? commit->buffer : buffer; -	     buf; -	     buf = line_end + 1) { +	for (buf = buffer; buf; buf = line_end + 1) {  		line_end = strchrnul(buf, '\n');  		ident_line = skip_prefix(buf, "author ");  		if (!ident_line) { @@ -619,7 +609,7 @@ static void record_author_date(struct author_date_slab *author_date,  	*(author_date_slab_at(author_date, commit)) = date;  fail_exit: -	free(buffer); +	unuse_commit_buffer(commit, buffer);  }  static int compare_commits_by_author_date(const void *a_, const void *b_, | 
