diff options
Diffstat (limited to 'packfile.c')
-rw-r--r-- | packfile.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/packfile.c b/packfile.c index 7c37f9ec5c..bb4bb14671 100644 --- a/packfile.c +++ b/packfile.c @@ -1537,8 +1537,15 @@ int packed_object_info(struct repository *r, struct packed_git *p, } if (oi->disk_sizep) { - struct revindex_entry *revidx = find_pack_revindex(p, obj_offset); - *oi->disk_sizep = revidx[1].offset - obj_offset; + uint32_t pos; + if (offset_to_pack_pos(p, obj_offset, &pos) < 0) { + error("could not find object at offset %"PRIuMAX" " + "in pack %s", (uintmax_t)obj_offset, p->pack_name); + type = OBJ_BAD; + goto out; + } + + *oi->disk_sizep = pack_pos_to_offset(p, pos + 1) - obj_offset; } if (oi->typep || oi->type_name) { |