Clear the delta base cache during fast-import checkpoint
Otherwise we may reuse the same memory address for a totally different "struct packed_git", and a previously cached object from the prior occupant might be returned when trying to unpack an object from the new pack. Found-by: Daniel Barkalow <barkalow@iabervon.org> Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
ab2fdb3b62
commit
3d20c636af
@ -1630,6 +1630,13 @@ static inline void release_delta_base_cache(struct delta_base_cache_entry *ent)
|
||||
}
|
||||
}
|
||||
|
||||
void clear_delta_base_cache(void)
|
||||
{
|
||||
unsigned long p;
|
||||
for (p = 0; p < MAX_DELTA_CACHE; p++)
|
||||
release_delta_base_cache(&delta_base_cache[p]);
|
||||
}
|
||||
|
||||
static void add_delta_base_cache(struct packed_git *p, off_t base_offset,
|
||||
void *base, unsigned long base_size, enum object_type type)
|
||||
{
|
||||
|
Reference in New Issue
Block a user