[PATCH] assorted delta code cleanup
[git.git] / sha1_file.c
index f6cf180..737ecb4 100644 (file)
@@ -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;
 }