diff options
-rw-r--r-- | commit.h | 2 | ||||
-rw-r--r-- | fsck-cache.c | 2 | ||||
-rw-r--r-- | object.c | 4 |
3 files changed, 7 insertions, 1 deletions
@@ -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 6ac122b71c..4050c17eb0 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) @@ -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); |