Stick a comment to update-cache.c:refresh_cache() that you can't
just free(archive_cache[i]) when replacing it there.
diff --git a/update-cache.c b/update-cache.c
index 3b44fe1..19d8f82 100644
--- a/update-cache.c
+++ b/update-cache.c
@@ -249,6 +249,9 @@
 			continue;
 		}
 		active_cache_changed = 1;
+		/* You can NOT just free active_cache[i] here, since it
+		 * might not be necessarily malloc()ed but can also come
+		 * from mmap(). */
 		active_cache[i] = new;
 	}
 	return has_errors;