[PATCH v3 17/22] sparse-index: correctly free EWAH contents
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Nov 5, 2024, 06:17 UTC
- Message-ID
- <76e9a6d57927cb8e7363b3af20d9b194ab258b21.1730786196.git.ps@pks.im>
- In-Reply-To
- <cover.1730786195.git.ps@pks.im>
While we free the `fsmonitor_dirty` member of `struct index_state`, we do not free the contents of that EWAH. Do so by using `ewah_free()` instead of `FREE_AND_NULL()`.
This leak is exposed by t7519, but plugging it alone does not make the test suite pass.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- sparse-index.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/sparse-index.c b/sparse-index.c index 3d7f2164e25..2107840bfc5 100644 --- a/sparse-index.c +++ b/sparse-index.c @@ -2,6 +2,7 @@ #include "git-compat-util.h" #include "environment.h" +#include "ewah/ewok.h" #include "gettext.h" #include "name-hash.h" #include "read-cache-ll.h" @@ -242,7 +243,8 @@ int convert_to_sparse(struct index_state *istate, int flags) cache_tree_update(istate, 0); istate->fsmonitor_has_run_once = 0; - FREE_AND_NULL(istate->fsmonitor_dirty); + ewah_free(istate->fsmonitor_dirty); + istate->fsmonitor_dirty = NULL; FREE_AND_NULL(istate->fsmonitor_last_update); istate->sparse_index = INDEX_COLLAPSED; @@ -438,7 +440,8 @@ void expand_index(struct index_state *istate, struct pattern_list *pl) istate->cache_nr = full->cache_nr; istate->cache_alloc = full->cache_alloc; istate->fsmonitor_has_run_once = 0; - FREE_AND_NULL(istate->fsmonitor_dirty); + ewah_free(istate->fsmonitor_dirty); + istate->fsmonitor_dirty = NULL; FREE_AND_NULL(istate->fsmonitor_last_update); strbuf_release(&base);
-- 2.47.0.229.g8f8d6eee53.dirty