X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;ds=sidebyside;f=object.c;h=5e8378857028afeb4d1cd91c0de26c8414e137de;hb=a8db165ee90c7a460916c3efbf97750dd019872c;hp=d093e17d240cff9e62a62b74ca4b3c86a472f54a;hpb=6b0c3121061df6b323f430700e8077b324b5e9dd;p=git.git diff --git a/object.c b/object.c index d093e17d..5e837885 100644 --- a/object.c +++ b/object.c @@ -10,7 +10,7 @@ struct object **objs; int nr_objs; static int obj_allocs; -static int find_object(unsigned char *sha1) +static int find_object(const unsigned char *sha1) { int first = 0, last = nr_objs; @@ -31,7 +31,7 @@ static int find_object(unsigned char *sha1) return -first-1; } -struct object *lookup_object(unsigned char *sha1) +struct object *lookup_object(const unsigned char *sha1) { int pos = find_object(sha1); if (pos >= 0) @@ -39,7 +39,7 @@ struct object *lookup_object(unsigned char *sha1) return NULL; } -void created_object(unsigned char *sha1, struct object *obj) +void created_object(const unsigned char *sha1, struct object *obj) { int pos = find_object(sha1); @@ -98,7 +98,7 @@ void mark_reachable(struct object *obj, unsigned int mask) } } -struct object *parse_object(unsigned char *sha1) +struct object *parse_object(const unsigned char *sha1) { unsigned long mapsize; void *map = map_sha1_file(sha1, &mapsize); @@ -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);