From: Junio C Hamano Date: Tue, 16 Jun 2015 21:27:08 +0000 (-0700) Subject: Merge branch 'nd/slim-index-pack-memory-usage' X-Git-Tag: v2.5.0-rc0~33 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/c3b1c1e9b252ab7bf192c086df53288dbf769c80?hp=486b51bc81e486c654ac35554b284816f4a6ae5c Merge branch 'nd/slim-index-pack-memory-usage' An earlier optimization broke index-pack for a large object transfer; this fixes it before the breakage hits any released version. * nd/slim-index-pack-memory-usage: index-pack: fix truncation of off_t in comparison --- diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 7ea2020d82..2ecfbae239 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -616,7 +616,9 @@ static int compare_ofs_delta_bases(off_t offset1, off_t offset2, int cmp = type1 - type2; if (cmp) return cmp; - return offset1 - offset2; + return offset1 < offset2 ? -1 : + offset1 > offset2 ? 1 : + 0; } static int find_ofs_delta(const off_t offset, enum object_type type) @@ -1051,7 +1053,9 @@ static int compare_ofs_delta_entry(const void *a, const void *b) const struct ofs_delta_entry *delta_a = a; const struct ofs_delta_entry *delta_b = b; - return delta_a->offset - delta_b->offset; + return delta_a->offset < delta_b->offset ? -1 : + delta_a->offset > delta_b->offset ? 1 : + 0; } static int compare_ref_delta_entry(const void *a, const void *b)