From bd1e17e245153fdc75feaaf5e556b922d98ca699 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Wed, 25 May 2005 19:26:28 -0700 Subject: [PATCH] Make "parse_object()" also fill in commit message buffer data. And teach fsck to free it to save memory. --- commit.h | 2 +- fsck-cache.c | 2 ++ object.c | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/commit.h b/commit.h index 0bb8779c..f7a2cb88 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 6ac122b7..4050c17e 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 d093e17d..5e72a787 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); -- 2.11.0