fsmonitor: fix hashmap memory leak in fsmonitor_run_daemon

The `state.cookies` hashmap is initialized during daemon startup but
never freed during cleanup in the `done:` label of
fsmonitor_run_daemon().  The cookie entries also have names allocated
via strbuf_detach() that must be freed individually.

Iterate the hashmap to free each cookie name, then call
hashmap_clear_and_free() to release the entries and table.

Signed-off-by: Paul Tarjan <github@paulisageek.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
main
Paul Tarjan 2026-04-15 13:27:27 +00:00 committed by Junio C Hamano
parent e21be6cd45
commit 8b1d965542
1 changed files with 9 additions and 0 deletions

View File

@ -1404,6 +1404,15 @@ static int fsmonitor_run_daemon(void)
done:
pthread_cond_destroy(&state.cookies_cond);
pthread_mutex_destroy(&state.main_lock);
{
struct hashmap_iter iter;
struct fsmonitor_cookie_item *cookie;

hashmap_for_each_entry(&state.cookies, &iter, cookie, entry)
free(cookie->name);
hashmap_clear_and_free(&state.cookies,
struct fsmonitor_cookie_item, entry);
}
fsm_listen__dtor(&state);
fsm_health__dtor(&state);