From: Linus Torvalds Date: Thu, 26 May 2005 02:26:28 +0000 (-0700) Subject: Make "parse_object()" also fill in commit message buffer data. X-Git-Tag: v0.99~454 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=bd1e17e245153fdc75feaaf5e556b922d98ca699;p=git.git Make "parse_object()" also fill in commit message buffer data. And teach fsck to free it to save memory. --- diff --git a/commit.h b/commit.h index 0bb8779ca..f7a2cb88b 100644 --- a/commit.h +++ b/commit.h @@ -14,7 +14,7 @@ struct commit { unsigned long date; struct commit_list *parents; struct tree *tree; - const char *buffer; + char *buffer; }; extern const char *commit_type; diff --git a/fsck-cache.c b/fsck-cache.c index 6ac122b71..4050c17eb 100644 --- a/fsck-cache.c +++ b/fsck-cache.c @@ -203,6 +203,8 @@ static int fsck_tree(struct tree *item) static int fsck_commit(struct commit *commit) { + free(commit->buffer); + commit->buffer = NULL; if (!commit->tree) return -1; if (!commit->parents && show_root) diff --git a/object.c b/object.c index d093e17d2..5e72a7878 100644 --- a/object.c +++ b/object.c @@ -129,6 +129,10 @@ struct object *parse_object(unsigned char *sha1) } else if (!strcmp(type, "commit")) { struct commit *commit = lookup_commit(sha1); parse_commit_buffer(commit, buffer, size); + if (!commit->buffer) { + commit->buffer = buffer; + buffer = NULL; + } obj = &commit->object; } else if (!strcmp(type, "tag")) { struct tag *tag = lookup_tag(sha1);