#include "pack-bitmap.h"
#include "pack-revindex.h"
+#define MIDX_PACK_ERROR ((void *)(intptr_t)-1)
+
int midx_checksum_valid(struct multi_pack_index *m);
void clear_midx_files_ext(const char *object_dir, const char *ext,
const char *keep_hash);
munmap((unsigned char *)m->data, m->data_len);
for (i = 0; i < m->num_packs; i++) {
- if (m->packs[i])
+ if (m->packs[i] && m->packs[i] != MIDX_PACK_ERROR)
m->packs[i]->multi_pack_index = 0;
}
FREE_AND_NULL(m->packs);
pack_int_id = midx_for_pack(&m, pack_int_id);
+ if (m->packs[pack_int_id] == MIDX_PACK_ERROR)
+ return 1;
if (m->packs[pack_int_id])
return 0;
strbuf_release(&pack_name);
strbuf_release(&key);
- if (!p)
+ if (!p) {
+ m->packs[pack_int_id] = MIDX_PACK_ERROR;
return 1;
+ }
p->multi_pack_index = 1;
m->packs[pack_int_id] = p;
uint32_t pack_int_id)
{
uint32_t local_pack_int_id = midx_for_pack(&m, pack_int_id);
+ if (m->packs[local_pack_int_id] == MIDX_PACK_ERROR)
+ return NULL;
return m->packs[local_pack_int_id];
}