On Mon, Feb 5, 2018 at 8:27 PM, Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > On Mon, Feb 5, 2018 at 6:55 PM, Stefan Beller <sbeller@xxxxxxxxxx> wrote: >> diff --git a/refs.c b/refs.c >> @@ -1609,9 +1609,6 @@ static struct ref_store_hash_entry *alloc_ref_store_hash_entry( >> -/* A pointer to the ref_store for the main repository: */ >> -static struct ref_store *main_ref_store; >> diff --git a/repository.h b/repository.h >> @@ -33,6 +33,11 @@ struct repository { >> */ >> struct object_store objects; >> >> + /* >> + * The store in which the refs are hold. >> + */ >> + struct ref_store *main_ref_store; > > Do items moved to the 'repository' structure need to be freed when the > 'repository' itself is freed? Is that being done by a different patch? > If so, it would ease review burden for the freeing to happen in the > same patch in which the item is moved to the 'repository'. There are two cases: * the_repository In the_repository we'll mostly have the globals as they exist (the_index, the_hash_algo, the_ref_store) and just as before these globals will not be freed at the end of the program. * arbitrary repos: For arbitrary repos, we usually need to allocate memory in repo_init and clear it out in repo_free/clear This patch is incomplete and is leaking the main ref store for arbitrary repos. Thanks for spotting the mem leak! Stefan