]> git.ipfire.org Git - thirdparty/git.git/commitdiff
packfile: convert mark_bad_packed_object() to object_id
authorRené Scharfe <l.s.r@web.de>
Sat, 11 Sep 2021 20:40:33 +0000 (22:40 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 12 Sep 2021 23:14:32 +0000 (16:14 -0700)
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>
object-file.c
packfile.c
packfile.h

index a8be8994814933e9d1afaae77edb93ec9934a3ac..fb5a385a06d4405e02e258acf940ca9e58cf9c79 100644 (file)
@@ -1616,7 +1616,7 @@ static int do_oid_object_info_extended(struct repository *r,
                return 0;
        rtype = packed_object_info(r, e.p, e.offset, oi);
        if (rtype < 0) {
-               mark_bad_packed_object(e.p, real->hash);
+               mark_bad_packed_object(e.p, real);
                return do_oid_object_info_extended(r, real, oi, 0);
        } else if (oi->whence == OI_PACKED) {
                oi->u.packed.offset = e.offset;
index 4d0d625238e934fa7e627840dca4e9a2809acacb..fb15fc5b49a15ee0ae42ecb22a382914dad9c574 100644 (file)
@@ -1161,17 +1161,17 @@ int unpack_object_header(struct packed_git *p,
        return type;
 }
 
-void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1)
+void mark_bad_packed_object(struct packed_git *p, const struct object_id *oid)
 {
        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 + hashsz * i))
+               if (hasheq(oid->hash, 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 + hashsz * p->num_bad_objects, sha1);
+       hashcpy(p->bad_object_sha1 + hashsz * p->num_bad_objects, oid->hash);
        p->num_bad_objects++;
 }
 
@@ -1272,7 +1272,7 @@ static int retry_bad_packed_offset(struct repository *r,
        if (offset_to_pack_pos(p, obj_offset, &pos) < 0)
                return OBJ_BAD;
        nth_packed_object_id(&oid, p, pack_pos_to_index(p, pos));
-       mark_bad_packed_object(p, oid.hash);
+       mark_bad_packed_object(p, &oid);
        type = oid_object_info(r, &oid, NULL);
        if (type <= OBJ_NONE)
                return OBJ_BAD;
@@ -1722,7 +1722,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
                                nth_packed_object_id(&oid, p, index_pos);
                                error("bad packed object CRC for %s",
                                      oid_to_hex(&oid));
-                               mark_bad_packed_object(p, oid.hash);
+                               mark_bad_packed_object(p, &oid);
                                data = NULL;
                                goto out;
                        }
@@ -1811,7 +1811,7 @@ void *unpack_entry(struct repository *r, struct packed_git *p, off_t obj_offset,
                                      " at offset %"PRIuMAX" from %s",
                                      oid_to_hex(&base_oid), (uintmax_t)obj_offset,
                                      p->pack_name);
-                               mark_bad_packed_object(p, base_oid.hash);
+                               mark_bad_packed_object(p, &base_oid);
                                base = read_object(r, &base_oid, &type, &base_size);
                                external_base = base;
                        }
index 3ae117a8aef0faf2f6e7e12abba51235f36fe2f4..a982ed9994036ef63cabc429f50395a0d4ced879 100644 (file)
@@ -159,7 +159,7 @@ int packed_object_info(struct repository *r,
                       struct packed_git *pack,
                       off_t offset, struct object_info *);
 
-void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
+void mark_bad_packed_object(struct packed_git *, const struct object_id *);
 const struct packed_git *has_packed_and_bad(struct repository *r, const unsigned char *sha1);
 
 #define ON_DISK_KEEP_PACKS 1