On Wed, Jul 17, 2024 at 05:12:25PM -0400, Taylor Blau wrote: > After that point, we only need to make two special considerations within > this function: > > - First, the pack_int_id returned to us by `nth_midxed_pack_int_id()` > is a position in the concatenated lexical order of packs, so we must > ensure that we subtract `m->num_packs_in_base` before accessing the > MIDX-local `packs` array. > > - Second, we must avoid translating the `pos` back to a MIDX-local > index, since we use it as an argument to `nth_midxed_offset()` which > expects a position relative to the concatenated lexical order of > objects. OK. I think this is correct, but this would be another place where we could use an nth_midxed_offset_one() function if we had one. My thinking was that we'd avoid walking back over the midx chain again. But I guess we don't actually do that, because our midx_for_object() will have overwritten our "m" variable, as well. So inside nth_midxed_offset_one() we'll immediately realize that the global position is inside the midx we passed in. A little extra arithmetic, but there's no pointer chasing. -Peff