packfile: convert mark_bad_packed_object() to object_id

All callers have full object IDs, so pass them on instead of just their hash member. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>

René Scharfe committed Sep 11, 2021 at 22:40 UTC 751530de5db77196a08897e3c47526c0f0147ef1
3 files changed +8 -8
object-file.c
+1 -1
@@ -1616,7 +1616,7 @@ static int do_oid_object_info_extended(struct repository *r,
1616 return 0;
1617 rtype = packed_object_info(r, e.p, e.offset, oi);
1618 if (rtype < 0) {
1619 - mark_bad_packed_object(e.p, real->hash);
1619 + mark_bad_packed_object(e.p, real);
1620 return do_oid_object_info_extended(r, real, oi, 0);
1621 } else if (oi->whence == OI_PACKED) {
1622 oi->u.packed.offset = e.offset;
packfile.c
+6 -6
@@ -1161,17 +1161,17 @@ int unpack_object_header(struct packed_git *p,
1161 return type;
1162 }
1163
1164 -void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1)
1164 +void mark_bad_packed_object(struct packed_git *p, const struct object_id *oid)
1165 {
1166 unsigned i;
1167 const unsigned hashsz = the_hash_algo->rawsz;
1168 for (i = 0; i < p->num_bad_objects; i++)
1169 - if (hasheq(sha1, p->bad_object_sha1 + hashsz * i))
1169 + if (hasheq(oid->hash, p->bad_object_sha1 + hashsz * i))
1170 return;
1171 p->bad_object_sha1 = xrealloc(p->bad_object_sha1,
1172 st_mult(GIT_MAX_RAWSZ,
1173 st_add(p->num_bad_objects, 1)));
1174 - hashcpy(p->bad_object_sha1 + hashsz * p->num_bad_objects, sha1);
1174 + hashcpy(p->bad_object_sha1 + hashsz * p->num_bad_objects, oid->hash);
1175 p->num_bad_objects++;
1176 }
1177
@@ -1272,7 +1272,7 @@ static int retry_bad_packed_offset(struct repository *r,
1272 if (offset_to_pack_pos(p, obj_offset, &pos) < 0)
1273 return OBJ_BAD;
1274 nth_packed_object_id(&oid, p, pack_pos_to_index(p, pos));
1275 - mark_bad_packed_object(p, oid.hash);
1275 + mark_bad_packed_object(p, &oid);
1276 type = oid_object_info(r, &oid, NULL);
1277 if (type <= OBJ_NONE)
1278 return OBJ_BAD;
@@ -1722,7 +1722,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
1722 nth_packed_object_id(&oid, p, index_pos);
1723 error("bad packed object CRC for %s",
1724 oid_to_hex(&oid));
1725 - mark_bad_packed_object(p, oid.hash);
1725 + mark_bad_packed_object(p, &oid);
1726 data = NULL;
1727 goto out;
1728 }
@@ -1811,7 +1811,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
1811 " at offset %"PRIuMAX" from %s",
1812 oid_to_hex(&base_oid), (uintmax_t)obj_offset,
1813 p->pack_name);
1814 - mark_bad_packed_object(p, base_oid.hash);
1814 + mark_bad_packed_object(p, &base_oid);
1815 base = read_object(r, &base_oid, &type, &base_size);
1816 external_base = base;
1817 }
packfile.h
+1 -1
@@ -159,7 +159,7 @@ int packed_object_info(struct repository *r,
159 struct packed_git *pack,
160 off_t offset, struct object_info *);
161
162 -void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
162 +void mark_bad_packed_object(struct packed_git *, const struct object_id *);
163 const struct packed_git *has_packed_and_bad(struct repository *r, const unsigned char *sha1);
164
165 #define ON_DISK_KEEP_PACKS 1