repository.c: free the "path cache" in repo_clear()
The "struct path_cache" added in 102de880d2
(path.c: migrate global
git_path_* to take a repository argument, 2018-05-17) is only used
directly by code in repository.[ch] (but populated in path.[ch]).
Let's move this code to repository.[ch], and stop leaking this memory
when we run repo_clear(). To avoid the cast change it from a "const
char *" to a "char *".
This also removes the "PATH_CACHE_INIT" macro, which has never been
used for anything. For the "struct repository" we already make a hard
assumption that it (and "the_repository") can be identically
initialized by making it a "static" variable, so making use of a
"PATH_CACHE_INIT" somewhere would have been confusing.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
2d102c2bca
commit
759f340738
16
repository.c
16
repository.c
@ -240,6 +240,20 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void repo_clear_path_cache(struct repo_path_cache *cache)
|
||||
{
|
||||
FREE_AND_NULL(cache->squash_msg);
|
||||
FREE_AND_NULL(cache->squash_msg);
|
||||
FREE_AND_NULL(cache->merge_msg);
|
||||
FREE_AND_NULL(cache->merge_rr);
|
||||
FREE_AND_NULL(cache->merge_mode);
|
||||
FREE_AND_NULL(cache->merge_head);
|
||||
FREE_AND_NULL(cache->merge_autostash);
|
||||
FREE_AND_NULL(cache->auto_merge);
|
||||
FREE_AND_NULL(cache->fetch_head);
|
||||
FREE_AND_NULL(cache->shallow);
|
||||
}
|
||||
|
||||
void repo_clear(struct repository *repo)
|
||||
{
|
||||
FREE_AND_NULL(repo->gitdir);
|
||||
@ -280,6 +294,8 @@ void repo_clear(struct repository *repo)
|
||||
remote_state_clear(repo->remote_state);
|
||||
FREE_AND_NULL(repo->remote_state);
|
||||
}
|
||||
|
||||
repo_clear_path_cache(&repo->cached_paths);
|
||||
}
|
||||
|
||||
int repo_read_index(struct repository *repo)
|
||||
|
Reference in New Issue
Block a user