summaryrefslogtreecommitdiff
path: root/pack-objects.c
diff options
context:
space:
mode:
authorDennis Stosberg <dennis@stosberg.net>2006-05-11 17:36:32 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-05-13 17:43:16 (GMT)
commit66561f5a776f2343331fff5b98adff1000622f42 (patch)
tree1c480663e03984fd23226964e54eba7a7c6a9eb9 /pack-objects.c
parentd1802851b0c112a065b43e3f83d631f867b7e1ce (diff)
downloadgit-66561f5a776f2343331fff5b98adff1000622f42.zip
git-66561f5a776f2343331fff5b98adff1000622f42.tar.gz
git-66561f5a776f2343331fff5b98adff1000622f42.tar.bz2
Fix git-pack-objects for 64-bit platforms
The offset of an object in the pack is recorded as a 4-byte integer in the index file. When reading the offset from the mmap'ed index in prepare_pack_revindex(), the address is dereferenced as a long*. This works fine as long as the long type is four bytes wide. On NetBSD/sparc64, however, a long is 8 bytes wide and so dereferencing the offset produces garbage. [jc: taking suggestion by Linus to use uint32_t] Signed-off-by: Dennis Stosberg <dennis@stosberg.net> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'pack-objects.c')
-rw-r--r--pack-objects.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/pack-objects.c b/pack-objects.c
index c0acc46..a81d609 100644
--- a/pack-objects.c
+++ b/pack-objects.c
@@ -156,7 +156,7 @@ static void prepare_pack_revindex(struct pack_revindex *rix)
rix->revindex = xmalloc(sizeof(unsigned long) * (num_ent + 1));
for (i = 0; i < num_ent; i++) {
- long hl = *((long *)(index + 24 * i));
+ uint32_t hl = *((uint32_t *)(index + 24 * i));
rix->revindex[i] = ntohl(hl);
}
/* This knows the pack format -- the 20-byte trailer