pack: move unpack_object_header_buffer()
Signed-off-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
0abe14f6a5
commit
32b42e152f
25
packfile.c
25
packfile.c
@ -884,3 +884,28 @@ void reprepare_packed_git(void)
|
||||
prepare_packed_git_run_once = 0;
|
||||
prepare_packed_git();
|
||||
}
|
||||
|
||||
unsigned long unpack_object_header_buffer(const unsigned char *buf,
|
||||
unsigned long len, enum object_type *type, unsigned long *sizep)
|
||||
{
|
||||
unsigned shift;
|
||||
unsigned long size, c;
|
||||
unsigned long used = 0;
|
||||
|
||||
c = buf[used++];
|
||||
*type = (c >> 4) & 7;
|
||||
size = c & 15;
|
||||
shift = 4;
|
||||
while (c & 0x80) {
|
||||
if (len <= used || bitsizeof(long) <= shift) {
|
||||
error("bad object header");
|
||||
size = used = 0;
|
||||
break;
|
||||
}
|
||||
c = buf[used++];
|
||||
size += (c & 0x7f) << shift;
|
||||
shift += 7;
|
||||
}
|
||||
*sizep = size;
|
||||
return used;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user