pack-objects: do not stop at object that is "too small"
authorJunio C Hamano <junkio@cox.net>
Fri, 21 Apr 2006 06:36:22 +0000 (23:36 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 21 Apr 2006 06:36:22 +0000 (23:36 -0700)
Because we sort the delta window by name-hash and then size,
hitting an object that is too small to consider as a delta base
for the current object does not mean we do not have better
candidate in the window beyond it.

Noticed by Shawn Pearce, analyzed by Nico, Linus and me.

Signed-off-by: Junio C Hamano <junkio@cox.net>
pack-objects.c
index 09f4f2c944d95bb145823c0b07f4a7f302bcab1f..f7d621757a98e29373750819db66e99dbb3630b6 100644 (file)
@@ -1052,7 +1052,7 @@ static int try_delta(struct unpacked *cur, struct unpacked *old, unsigned max_de
        if (cur_entry->delta)
                max_size = cur_entry->delta_size-1;
        if (sizediff >= max_size)
-               return -1;
+               return 0;
        delta_buf = diff_delta(old->data, oldsize,
                               cur->data, size, &delta_size, max_size);
        if (!delta_buf)