Skip to content

Commit

Permalink
object: add repository argument to parse_object_buffer
Browse files Browse the repository at this point in the history
Add a repository argument to allow the callers of parse_object_buffer
to be more specific about which repository to act on. This is a small
mechanical change; it doesn't change the implementation to handle
repositories other than the_repository yet.

As with the previous commits, use a macro to catch callers passing a
repository other than the_repository at compile time.

Signed-off-by: Jonathan Nieder <[email protected]>
Signed-off-by: Stefan Beller <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
stefanbeller authored and gitster committed Jun 29, 2018
1 parent 5abddd1 commit 1ec5bfd
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 9 deletions.
3 changes: 2 additions & 1 deletion builtin/fast-export.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,8 @@ static void export_blob(const struct object_id *oid)
die ("Could not read blob %s", oid_to_hex(oid));
if (check_object_signature(oid, buf, size, type_name(type)) < 0)
die("sha1 mismatch in blob %s", oid_to_hex(oid));
object = parse_object_buffer(oid, type, size, buf, &eaten);
object = parse_object_buffer(the_repository, oid, type,
size, buf, &eaten);
}

if (!object)
Expand Down
7 changes: 5 additions & 2 deletions builtin/fsck.c
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,8 @@ static int fsck_obj_buffer(const struct object_id *oid, enum object_type type,
* verify_packfile(), data_valid variable for details.
*/
struct object *obj;
obj = parse_object_buffer(oid, type, size, buffer, eaten);
obj = parse_object_buffer(the_repository, oid, type, size, buffer,
eaten);
if (!obj) {
errors_found |= ERROR_OBJECT;
return error("%s: object corrupt or missing", oid_to_hex(oid));
Expand Down Expand Up @@ -525,7 +526,9 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
if (!contents && type != OBJ_BLOB)
BUG("read_loose_object streamed a non-blob");

obj = parse_object_buffer(oid, type, size, contents, &eaten);
obj = parse_object_buffer(the_repository, oid, type, size,
contents, &eaten);

if (!obj) {
errors_found |= ERROR_OBJECT;
error("%s: object could not be parsed: %s",
Expand Down
3 changes: 2 additions & 1 deletion builtin/index-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -851,7 +851,8 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
* we do not need to free the memory here, as the
* buf is deleted by the caller.
*/
obj = parse_object_buffer(oid, type, size, buf,
obj = parse_object_buffer(the_repository, oid, type,
size, buf,
&eaten);
if (!obj)
die(_("invalid %s"), type_name(type));
Expand Down
3 changes: 2 additions & 1 deletion builtin/unpack-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,8 @@ static void write_object(unsigned nr, enum object_type type,
int eaten;
hash_object_file(buf, size, type_name(type), &obj_list[nr].oid);
added_object(nr, type, buf, size);
obj = parse_object_buffer(&obj_list[nr].oid, type, size, buf,
obj = parse_object_buffer(the_repository, &obj_list[nr].oid,
type, size, buf,
&eaten);
if (!obj)
die("invalid %s", type_name(type));
Expand Down
5 changes: 3 additions & 2 deletions object.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ struct object *lookup_unknown_object(const unsigned char *sha1)
return obj;
}

struct object *parse_object_buffer(const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p)
struct object *parse_object_buffer_the_repository(const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p)
{
struct object *obj;
*eaten_p = 0;
Expand Down Expand Up @@ -278,7 +278,8 @@ struct object *parse_object_the_repository(const struct object_id *oid)
return NULL;
}

obj = parse_object_buffer(oid, type, size, buffer, &eaten);
obj = parse_object_buffer(the_repository, oid, type, size,
buffer, &eaten);
if (!eaten)
free(buffer);
return obj;
Expand Down
3 changes: 2 additions & 1 deletion object.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ struct object *parse_object_or_die(const struct object_id *oid, const char *name
* parsing it. eaten_p indicates if the object has a borrowed copy
* of buffer and the caller should not free() it.
*/
struct object *parse_object_buffer(const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p);
#define parse_object_buffer(r, o, t, s, b, e) parse_object_buffer_##r(o, t, s, b, e)
struct object *parse_object_buffer_the_repository(const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p);

/** Returns the object, with potentially excess memory allocated. **/
struct object *lookup_unknown_object(const unsigned char *sha1);
Expand Down
3 changes: 2 additions & 1 deletion ref-filter.c
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,8 @@ static void *get_obj(const struct object_id *oid, struct object **obj, unsigned
void *buf = read_object_file(oid, &type, sz);

if (buf)
*obj = parse_object_buffer(oid, type, *sz, buf, eaten);
*obj = parse_object_buffer(the_repository, oid, type, *sz,
buf, eaten);
else
*obj = NULL;
return buf;
Expand Down

0 comments on commit 1ec5bfd

Please sign in to comment.