diff mbox series

[v2,09/19] midx: teach `nth_midxed_offset()` about incremental MIDXs

Message ID 342ed560331d95fb0a1d86743dbb999ec7327313.1721250704.git.me@ttaylorr.com (mailing list archive)
State Superseded
Headers show
Series midx: incremental multi-pack indexes, part one | expand

Commit Message

Taylor Blau July 17, 2024, 9:12 p.m. UTC
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>
---
 midx.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Jeff King Aug. 1, 2024, 10:08 a.m. UTC | #1
On Wed, Jul 17, 2024 at 05:12:22PM -0400, Taylor Blau wrote:

> 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.

Makes sense.

> --- a/midx.c
> +++ b/midx.c
> @@ -368,6 +368,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);
> +

"pos" reused again! :)

It certainly makes the diffs nicer to read.

-Peff
diff mbox series

Patch

diff --git a/midx.c b/midx.c
index cd6e4afde4..f87df6bede 100644
--- a/midx.c
+++ b/midx.c
@@ -368,6 +368,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));