Nicolas Pitre  committed a91ef6e

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):


git init
git config core.compression 0

# create big objects with no deltas
for i in $(seq -w 1 2 63)
echo $i
/tmp/test-genrandom $i 268435456 > file_$i
git add file_$i
rm file_$i
echo "file_$i -delta" >> .gitattributes

# create "deltifiable" objects in between big objects
for i in $(seq -w 2 2 64)
echo "$i $i $i" >> grow
cp grow file_$i
git add file_$i
rm file_$i
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 <>
Signed-off-by: Junio C Hamano <>

  • Participants
  • Parent commits ff350cc

Comments (0)

Files changed (1)

File index-pack.c

 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;