X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=diff-delta.c;h=51df4608a8186e519bcb3b4e67d421c18efb696a;hb=4b4a5dbb17e1136275665024689625ed5cc5a03d;hp=fa16d06c8d1e85a458428c673cb2f589857f5424;hpb=7f0f4fa4374edfe2050b3ab636f43ee80daa63f2;p=git.git diff --git a/diff-delta.c b/diff-delta.c index fa16d06c8..51df4608a 100644 --- a/diff-delta.c +++ b/diff-delta.c @@ -308,8 +308,8 @@ create_delta(const struct delta_index *index, continue; if (ref_size > top - src) ref_size = top - src; - if (ref_size > 0x10000) - ref_size = 0x10000; + if (ref_size > 0xffffff) + ref_size = 0xffffff; if (ref_size <= msize) break; while (ref_size-- && *src++ == *ref) @@ -318,6 +318,8 @@ create_delta(const struct delta_index *index, /* this is our best match so far */ msize = ref - entry->ptr; moff = entry->ptr - ref_data; + if (msize >= 0x10000) + break; /* this is good enough */ } } @@ -381,6 +383,8 @@ create_delta(const struct delta_index *index, if (msize & 0xff) { out[outpos++] = msize; i |= 0x10; } msize >>= 8; if (msize & 0xff) { out[outpos++] = msize; i |= 0x20; } + msize >>= 8; + if (msize & 0xff) { out[outpos++] = msize; i |= 0x40; } *op = i; }