packfile: use oidset for bad objects
Store the object ID of broken pack entries in an oidset instead of keeping only their hashes in an unsorted array. The resulting code is shorter and easier to read. It also handles the (hopefully) very rare case of having a high number of bad objects better. Helped-by: Jeff King <peff@peff.net> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
7407d733a4
commit
09ef66179b
10
midx.c
10
midx.c
@ -307,13 +307,9 @@ int fill_midx_entry(struct repository * r,
|
||||
if (!is_pack_valid(p))
|
||||
return 0;
|
||||
|
||||
if (p->num_bad_objects) {
|
||||
uint32_t i;
|
||||
for (i = 0; i < p->num_bad_objects; i++)
|
||||
if (hasheq(oid->hash,
|
||||
p->bad_object_sha1 + the_hash_algo->rawsz * i))
|
||||
return 0;
|
||||
}
|
||||
if (oidset_size(&p->bad_objects) &&
|
||||
oidset_contains(&p->bad_objects, oid))
|
||||
return 0;
|
||||
|
||||
e->offset = nth_midxed_offset(m, pos);
|
||||
e->p = p;
|
||||
|
Reference in New Issue
Block a user