summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2014-06-10 17:40:14 -0400
committerJunio C Hamano <gitster@pobox.com>2014-06-13 12:08:17 -0700
commit66c2827ea4deb24ff541e30a5b6239ad5e9f6801 (patch)
treef18ee239e5cfe24ad5fed70b3e4836fe2aa63384
parent0fb370da9ca972f9571530f95c0dacb31368c280 (diff)
downloadgit-66c2827ea4deb24ff541e30a5b6239ad5e9f6801.tar.gz
provide a helper to set the commit buffer
Right now this is just a one-liner, but abstracting it will make it easier to change later. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/blame.c2
-rw-r--r--commit.c7
-rw-r--r--commit.h6
-rw-r--r--object.c2
4 files changed, 14 insertions, 3 deletions
diff --git a/builtin/blame.c b/builtin/blame.c
index 85a3681306..38784ab9d6 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2046,7 +2046,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
ident, ident, path,
(!contents_from ? path :
(!strcmp(contents_from, "-") ? "standard input" : contents_from)));
- commit->buffer = strbuf_detach(&msg, NULL);
+ set_commit_buffer(commit, strbuf_detach(&msg, NULL));
if (!contents_from || strcmp("-", contents_from)) {
struct stat st;
diff --git a/commit.c b/commit.c
index 11a05c1f24..fc8b4e287d 100644
--- a/commit.c
+++ b/commit.c
@@ -245,6 +245,11 @@ int unregister_shallow(const unsigned char *sha1)
return 0;
}
+void set_commit_buffer(struct commit *commit, void *buffer)
+{
+ commit->buffer = buffer;
+}
+
void free_commit_buffer(struct commit *commit)
{
free(commit->buffer);
@@ -335,7 +340,7 @@ int parse_commit(struct commit *item)
}
ret = parse_commit_buffer(item, buffer, size);
if (save_commit_buffer && !ret) {
- item->buffer = buffer;
+ set_commit_buffer(item, buffer);
return 0;
}
free(buffer);
diff --git a/commit.h b/commit.h
index d72ed43340..cc89128894 100644
--- a/commit.h
+++ b/commit.h
@@ -52,6 +52,12 @@ int parse_commit(struct commit *item);
void parse_commit_or_die(struct commit *item);
/*
+ * Associate an object buffer with the commit. The ownership of the
+ * memory is handed over to the commit, and must be free()-able.
+ */
+void set_commit_buffer(struct commit *, void *buffer);
+
+/*
* Free any cached object buffer associated with the commit.
*/
void free_commit_buffer(struct commit *);
diff --git a/object.c b/object.c
index 57a0890a87..44ca657204 100644
--- a/object.c
+++ b/object.c
@@ -198,7 +198,7 @@ struct object *parse_object_buffer(const unsigned char *sha1, enum object_type t
if (parse_commit_buffer(commit, buffer, size))
return NULL;
if (!commit->buffer) {
- commit->buffer = buffer;
+ set_commit_buffer(commit, buffer);
*eaten_p = 1;
}
obj = &commit->object;