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