Commit 8a765c72 by Colin Stolley

midx: fix large object offset table check.

It's insufficient to only check if the offset high order bit is set, we
must also check to see if object_large_offsets are in use.

This bug is causing objects to appear missing because they can't be
found in the index.
parent bdab2238
...@@ -431,7 +431,7 @@ int git_midx_entry_find( ...@@ -431,7 +431,7 @@ int git_midx_entry_find(
object_offset = idx->object_offsets + pos * 8; object_offset = idx->object_offsets + pos * 8;
offset = ntohl(*((uint32_t *)(object_offset + 4))); offset = ntohl(*((uint32_t *)(object_offset + 4)));
if (offset & 0x80000000) { if (idx->object_large_offsets && offset & 0x80000000) {
uint32_t object_large_offsets_pos = offset & 0x7fffffff; uint32_t object_large_offsets_pos = offset & 0x7fffffff;
const unsigned char *object_large_offsets_index = idx->object_large_offsets; const unsigned char *object_large_offsets_index = idx->object_large_offsets;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment