Show changes to builtin/unpack-objects.c +20 −18
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index f63973c..a9e681e 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -124,7 +124,7 @@ static void *get_data(unsigned long size)
struct delta_info {
unsigned char base_sha1[20];
- unsigned nr;
+ uint32_t nr;
off_t base_offset;
unsigned long size;
void *delta;
@@ -133,7 +133,7 @@ struct delta_info {
static struct delta_info *delta_list;
-static void add_delta_to_list(unsigned nr, unsigned const char *base_sha1,
+static void add_delta_to_list(uint32_t nr, unsigned const char *base_sha1,
off_t base_offset,
void *delta, unsigned long size)
{
@@ -158,7 +158,6 @@ struct obj_info {
#define FLAG_WRITTEN (1u<<21)
static struct obj_info *obj_list;
-static unsigned nr_objects;
/*
* Called only from check_object() after it verified this object
@@ -206,16 +205,16 @@ static int check_object(struct object *obj, int type, void *data)
return 0;
}
-static void write_rest(void)
+static void write_rest(uint32_t nr_objects)
{
- unsigned i;
+ uint32_t i;
for (i = 0; i < nr_objects; i++) {
if (obj_list[i].obj)
check_object(obj_list[i].obj, OBJ_ANY, NULL);
}
}
-static void added_object(unsigned nr, enum object_type type,
+static void added_object(uint32_t nr, enum object_type type,
void *data, unsigned long size);
/*
@@ -223,7 +222,7 @@ static void added_object(unsigned nr, enum object_type type,
* of it. Under --strict, this buffers structured objects in-core,
* to be checked at the end.
*/
-static void write_object(unsigned nr, enum object_type type,
+static void write_object(uint32_t nr, enum object_type type,
void *buf, unsigned long size)
{
if (!strict) {
@@ -259,7 +258,7 @@ static void write_object(unsigned nr, enum object_type type,
}
}
-static void resolve_delta(unsigned nr, enum object_type type,
+static void resolve_delta(uint32_t nr, enum object_type type,
void *base, unsigned long base_size,
void *delta, unsigned long delta_size)
{
@@ -279,7 +278,7 @@ static void resolve_delta(unsigned nr, enum object_type type,
* We now know the contents of an object (which is nr-th in the pack);
* resolve all the deltified objects that are based on it.
*/
-static void added_object(unsigned nr, enum object_type type,
+static void added_object(uint32_t nr, enum object_type type,
void *data, unsigned long size)
{
struct delta_info **p = &delta_list;
@@ -300,7 +299,7 @@ static void added_object(unsigned nr, enum object_type type,
}
static void unpack_non_delta_entry(enum object_type type, unsigned long size,
- unsigned nr)
+ uint32_t nr)
{
void *buf = get_data(size);
@@ -310,7 +309,7 @@ static void unpack_non_delta_entry(enum object_type type, unsigned long size,
free(buf);
}
-static int resolve_against_held(unsigned nr, const unsigned char *base,
+static int resolve_against_held(uint32_t nr, const unsigned char *base,
void *delta_data, unsigned long delta_size)
{
struct object *obj;
@@ -327,7 +326,7 @@ static int resolve_against_held(unsigned nr, const unsigned char *base,
}
static void unpack_delta_entry(enum object_type type, unsigned long delta_size,
- unsigned nr)
+ uint32_t nr)
{
void *delta_data, *base;
unsigned long base_size;
@@ -356,7 +355,7 @@ static void unpack_delta_entry(enum object_type type, unsigned long delta_size,
unsigned base_found = 0;
unsigned char *pack, c;
off_t base_offset;
- unsigned lo, mid, hi;
+ uint32_t lo, mid, hi;
pack = fill(1);
c = *pack;
@@ -421,7 +420,7 @@ static void unpack_delta_entry(enum object_type type, unsigned long delta_size,
free(base);
}
-static void unpack_one(unsigned nr)
+static void unpack_one(uint32_t nr)
{
unsigned shift;
unsigned char *pack;
@@ -464,9 +463,9 @@ static void unpack_one(unsigned nr)
}
}
-static void unpack_all(void)
+static uint32_t unpack_all(void)
{
- int i;
+ uint32_t i, nr_objects;
struct progress *progress = NULL;
struct pack_header *hdr = fill(sizeof(struct pack_header));
@@ -490,11 +489,14 @@ static void unpack_all(void)
if (delta_list)
die("unresolved deltas left after unpacking");
+
+ return nr_objects;
}
int cmd_unpack_objects(int argc, const char **argv, const char *prefix)
{
int i;
+ uint32_t nr_objects;
unsigned char sha1[20];
read_replace_refs = 0;
@@ -545,11 +547,11 @@ int cmd_unpack_objects(int argc, const char **argv, const char *prefix)
usage(unpack_usage);
}
git_SHA1_Init(&ctx);
- unpack_all();
+ nr_objects = unpack_all();
git_SHA1_Update(&ctx, buffer, offset);
git_SHA1_Final(sha1, &ctx);
if (strict)
- write_rest();
+ write_rest(nr_objects);
if (hashcmp(fill(20), sha1))
die("final sha1 did not match");
use(20);