Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Fix delta "sliding window" code
author
Linus Torvalds
<torvalds@ppc970.osdl.org>
Sun, 26 Jun 2005 01:29:23 +0000
(18:29 -0700)
committer
Linus Torvalds
<torvalds@ppc970.osdl.org>
Sun, 26 Jun 2005 01:29:23 +0000
(18:29 -0700)
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.
pack-objects.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
eb41ab1
)
diff --git
a/pack-objects.c
b/pack-objects.c
index 68c7e592b51b2174390bf9ab17e7dec7a9841d52..dfa9d44a15625d71a93418c2c5bd996441c79506 100644
(file)
--- a/
pack-objects.c
+++ b/
pack-objects.c
@@
-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);
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;
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;
m = array + other_idx;
if (!m->entry)
break;