summaryrefslogtreecommitdiff
path: root/repository.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2022-03-13 22:56:18 (GMT)
committerJunio C Hamano <gitster@pobox.com>2022-03-13 22:56:18 (GMT)
commitccafbbfb4ee29ee3e9fab1e5e22ec3b88a5aec4f (patch)
tree58589a4ee55858487b7758d5f9ef553da0f6b542 /repository.c
parent4eb845ac0af364d65666389c6efae3f09483cd2e (diff)
parent759f34073807119ffb935a84aa86e6a8fa7a9bc4 (diff)
downloadgit-ccafbbfb4ee29ee3e9fab1e5e22ec3b88a5aec4f.zip
git-ccafbbfb4ee29ee3e9fab1e5e22ec3b88a5aec4f.tar.gz
git-ccafbbfb4ee29ee3e9fab1e5e22ec3b88a5aec4f.tar.bz2
Merge branch 'ab/plug-random-leaks'
Plug random memory leaks. * ab/plug-random-leaks: repository.c: free the "path cache" in repo_clear() range-diff: plug memory leak in read_patches() range-diff: plug memory leak in common invocation lockfile API users: simplify and don't leak "path" commit-graph: stop fill_oids_from_packs() progress on error and free() commit-graph: fix memory leak in misused string_list API submodule--helper: fix trivial leak in module_add() transport: stop needlessly copying bundle header references bundle: call strvec_clear() on allocated strvec remote-curl.c: free memory in cmd_main() urlmatch.c: add and use a *_release() function diff.c: free "buf" in diff_words_flush() merge-base: free() allocated "struct commit **" list index-pack: fix memory leaks
Diffstat (limited to 'repository.c')
-rw-r--r--repository.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/repository.c b/repository.c
index dddee32..5d166b6 100644
--- a/repository.c
+++ b/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)