On Mon, Oct 8, 2018 at 2:57 PM brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> wrote: > > Replace uses of GIT_SHA1_RAWSZ with references to the_hash_algo to avoid > dependence on a particular hash length. Unlike the previous patches, this is dealing directly with packfiles, which (I would think) carry their own hash function selector? (i.e. packfiles up to version 4 are sha1 hardcoded and version 5 and onwards will have a hash type field. Usually that hash type would match what is in the_repository, but you could obtain packfiles out of band, or the translation table that we plan to have might be part of the packfile/idx file?) > > Signed-off-by: brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> > --- > packfile.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/packfile.c b/packfile.c > index 841b36182f..17f993b5bf 100644 > --- a/packfile.c > +++ b/packfile.c > @@ -1121,13 +1121,14 @@ int unpack_object_header(struct packed_git *p, > void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1) > { > unsigned i; > + const unsigned hashsz = the_hash_algo->rawsz; > for (i = 0; i < p->num_bad_objects; i++) > - if (hasheq(sha1, p->bad_object_sha1 + GIT_SHA1_RAWSZ * i)) > + if (hasheq(sha1, p->bad_object_sha1 + hashsz * i)) > return; > p->bad_object_sha1 = xrealloc(p->bad_object_sha1, > st_mult(GIT_MAX_RAWSZ, > st_add(p->num_bad_objects, 1))); > - hashcpy(p->bad_object_sha1 + GIT_SHA1_RAWSZ * p->num_bad_objects, sha1); > + hashcpy(p->bad_object_sha1 + hashsz * p->num_bad_objects, sha1); > p->num_bad_objects++; > } >