diff --git a/sha1_file.c b/sha1_file.c
index ced33e837b0acc3863ff86d2d0151951d55f6483..b63f842cbdaf01e8a3b0ba35cbfc1ad0cbac6913 100644 (file)
--- a/sha1_file.c
+++ b/sha1_file.c
while (*pp) {
p = *pp;
if (strcmp(pack_name, p->pack_name) == 0) {
+ clear_delta_base_cache();
close_pack_windows(p);
if (p->pack_fd != -1)
close(p->pack_fd);
@@ -1663,6 +1664,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)
{