]> git.ipfire.org Git - thirdparty/git.git/commitdiff
midx: teach `nth_midxed_offset()` about incremental MIDXs
authorTaylor Blau <me@ttaylorr.com>
Tue, 6 Aug 2024 15:37:36 +0000 (11:37 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 6 Aug 2024 19:01:37 +0000 (12:01 -0700)
In a similar fashion as in previous commits, teach the function
`nth_midxed_offset()` about incremental MIDXs.

The given object `pos` is used to find the containing MIDX, and
translated back into a MIDX-local position by assigning the return value
of `midx_for_object()` to it.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
midx.c

diff --git a/midx.c b/midx.c
index 83857cbd1ed7dbaf113cb65635078c4e1067ef65..346e58dec70c983d263466974f7aa17b3a5e4022 100644 (file)
--- a/midx.c
+++ b/midx.c
@@ -369,6 +369,8 @@ off_t nth_midxed_offset(struct multi_pack_index *m, uint32_t pos)
        const unsigned char *offset_data;
        uint32_t offset32;
 
+       pos = midx_for_object(&m, pos);
+
        offset_data = m->chunk_object_offsets + (off_t)pos * MIDX_CHUNK_OFFSET_WIDTH;
        offset32 = get_be32(offset_data + sizeof(uint32_t));