mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Fix delta "sliding window" code
When Junio fixed the lack of a successful error code from try_delta(), that uncovered an off-by-one error in the caller. Also, some testing made it clear that we now find a lot more deltas, because we used to (incorrectly) break early on bogus "failure" cases.
This commit is contained in:
parent
eb41ab11e8
commit
78817c15de
|
@ -344,11 +344,12 @@ static void find_deltas(struct object_entry **list, int window)
|
|||
n->data = read_sha1_file(entry->sha1, type, &size);
|
||||
if (size != entry->size)
|
||||
die("object %s inconsistent object length (%lu vs %lu)", sha1_to_hex(entry->sha1), size, entry->size);
|
||||
for (j = 0; j < window; j++) {
|
||||
unsigned int other_idx = idx - 1 - j;
|
||||
j = window;
|
||||
while (--j > 0) {
|
||||
unsigned int other_idx = idx + j;
|
||||
struct unpacked *m;
|
||||
if (other_idx < 0)
|
||||
other_idx += window;
|
||||
if (other_idx >= window)
|
||||
other_idx -= window;
|
||||
m = array + other_idx;
|
||||
if (!m->entry)
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue