This allocation is technically always reachable and cannot leak, but so are a few others that *are* freed. --- src/haproxy.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/haproxy.c b/src/haproxy.c index 64d7e0eea..70d442c40 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2603,7 +2603,7 @@ void deinit(void) struct logformat_node *lf, *lfb; struct bind_conf *bind_conf, *bind_back; struct build_opts_str *bol, *bolb; - struct post_deinit_fct *pdf; + struct post_deinit_fct *pdf, *pdfb; struct proxy_deinit_fct *pxdf, *pxdfb; struct server_deinit_fct *srvdf; @@ -2896,6 +2896,11 @@ void deinit(void) free(pxdf); } + list_for_each_entry_safe(pdf, pdfb, &post_deinit_list, list) { + LIST_DEL(&pdf->list); + free(pdf); + } + vars_prune(&global.vars, NULL, NULL); pool_destroy_all(); deinit_pollers(); -- 2.27.0