[PATCH] repository: fix free problem with repo_clear(the_repository)
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- May 9, 2018, 17:04 UTC
- Message-ID
- <20180509170409.13666-1-pclouds@gmail.com>
the_repository is special. One of the special things about it is that it does not allocate a new index_state object like submodules but points to the global the_index variable instead. As a global variable, the_index cannot be free()'d.
Add an exception for this in repo_clear(). In the future perhaps we would be able to allocate the_repository's index on heap too. Then we can remove revert this.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- I was trying to test the new parsed_object_pool_clear() and found this.
repository.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/repository.c b/repository.c index a4848c1bd0..f44733524a 100644 --- a/repository.c +++ b/repository.c @@ -238,7 +238,9 @@ void repo_clear(struct repository *repo) if (repo->index) { discard_index(repo->index); - FREE_AND_NULL(repo->index); + if (repo->index != &the_index) + free(repo->index); + repo->index = NULL; } }
-- 2.17.0.705.g3525833791