aboutsummaryrefslogtreecommitdiff
path: root/index-pack.c
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2007-11-10 23:29:10 -0500
committerJunio C Hamano <gitster@pobox.com>2007-11-11 02:57:13 -0800
commita91ef6e75b897a255cc17b70014a39e68dd54c7a (patch)
treebf52ced5c9bcd3ceb895481d3cd3262331a218d0 /index-pack.c
parentff350ccf49a800c4c90f817d346fb1bcb96e02e7 (diff)
downloadgit-a91ef6e75b897a255cc17b70014a39e68dd54c7a.tar.gz
git-a91ef6e75b897a255cc17b70014a39e68dd54c7a.tar.xz
fix index-pack with packs >4GB containing deltas on 32-bit machines
This probably hasn't been properly tested before. Here's a script to create a 8GB repo with the necessary characteristics (copy the test-genrandom executable from the Git build tree to /tmp first): ----- #!/bin/bash git init git config core.compression 0 # create big objects with no deltas for i in $(seq -w 1 2 63) do echo $i /tmp/test-genrandom $i 268435456 > file_$i git add file_$i rm file_$i echo "file_$i -delta" >> .gitattributes done # create "deltifiable" objects in between big objects for i in $(seq -w 2 2 64) do echo "$i $i $i" >> grow cp grow file_$i git add file_$i rm file_$i done rm grow # create a pack with them git commit -q -m "commit of big objects interlaced with small deltas" git repack -a -d ----- Then clone this repo over the Git protocol. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'index-pack.c')
-rw-r--r--index-pack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/index-pack.c b/index-pack.c
index db58e0504..c232e3fc7 100644
--- a/index-pack.c
+++ b/index-pack.c
@@ -254,7 +254,7 @@ static void *unpack_raw_entry(struct object_entry *obj, union delta_base *delta_
static void *get_data_from_pack(struct object_entry *obj)
{
- unsigned long from = obj[0].idx.offset + obj[0].hdr_size;
+ off_t from = obj[0].idx.offset + obj[0].hdr_size;
unsigned long len = obj[1].idx.offset - from;
unsigned long rdy = 0;
unsigned char *src, *data;