summaryrefslogtreecommitdiff
path: root/sha1_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'sha1_file.c')
-rw-r--r--sha1_file.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/sha1_file.c b/sha1_file.c
index f6cf180..737ecb4 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -592,22 +592,6 @@ void * unpack_sha1_file(void *map, unsigned long mapsize, char *type, unsigned l
return unpack_sha1_rest(&stream, hdr, *size);
}
-static unsigned long parse_delta_size(unsigned char **p)
-{
- unsigned char c;
- unsigned long size = 0;
- unsigned shift = 0;
- unsigned char *data = *p;
-
- do {
- c = *data++;
- size += (c & 0x7f) << shift;
- shift += 7;
- } while (c & 0x80);
- *p = data;
- return size;
-}
-
static int packed_delta_info(unsigned char *base_sha1,
unsigned long delta_size,
unsigned long left,
@@ -645,11 +629,12 @@ static int packed_delta_info(unsigned char *base_sha1,
* the result size. Verify the base size while we are at it.
*/
data = delta_head;
- verify_base_size = parse_delta_size(&data);
- result_size = parse_delta_size(&data);
+ verify_base_size = get_delta_hdr_size(&data);
if (verify_base_size != base_size)
die("delta base size mismatch");
+ /* Read the result size */
+ result_size = get_delta_hdr_size(&data);
*sizep = result_size;
return 0;
}