pack-revindex.c: avoid direct revindex access in 'offset_to_pack_pos()'

To prepare for on-disk reverse indexes, remove a spot in 'offset_to_pack_pos()' that looks at the 'revindex' array in 'struct packed_git'. Even though this use of the revindex pointer is within pack-revindex.c, this clean up is still worth doing. Since the 'revindex' pointer will be NULL when reading from an on-disk reverse index (instead the 'revindex_data' pointer will be mmaped to the 'pack-*.rev' file), this call-site would have to include a conditional to lookup the offset for position 'mi' each iteration through the search. So instead of open-coding 'pack_pos_to_offset()', call it directly from within 'offset_to_pack_pos()'. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Jan 13, 2021 at 17:25 UTC e5dcd7841828fd4c03dfc8a5c52691ada979b7e2
1 file changed +4 -4
pack-revindex.c
+4 -4
@@ -177,21 +177,21 @@ int load_pack_revindex(struct packed_git *p)
177 int offset_to_pack_pos(struct packed_git *p, off_t ofs, uint32_t *pos)
178 {
179 unsigned lo, hi;
180 - const struct revindex_entry *revindex;
180
181 if (load_pack_revindex(p) < 0)
182 return -1;
183
184 lo = 0;
185 hi = p->num_objects + 1;
187 - revindex = p->revindex;
186
187 do {
188 const unsigned mi = lo + (hi - lo) / 2;
191 - if (revindex[mi].offset == ofs) {
189 + off_t got = pack_pos_to_offset(p, mi);
190 +
191 + if (got == ofs) {
192 *pos = mi;
193 return 0;
194 - } else if (ofs < revindex[mi].offset)
194 + } else if (ofs < got)
195 hi = mi;
196 else
197 lo = mi + 1;