From 49619f2b1e9cf3bc175d1f59fe0e584644b45d0f Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 4 Jun 2020 12:41:56 +0200 Subject: [PATCH] tools: fix leaks --- src/tools/pw-dot.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/tools/pw-dot.c b/src/tools/pw-dot.c index a4184fa85..9a1a12bf5 100644 --- a/src/tools/pw-dot.c +++ b/src/tools/pw-dot.c @@ -582,23 +582,24 @@ static const struct pw_module_events module_events = { .info = module_event_info }; +static void removed_proxy(void *user_data) +{ + struct global *g = user_data; + pw_proxy_destroy(g->proxy); +} + static void destroy_proxy(void *user_data) { - struct global *g = user_data; - - if (g->props) { - pw_properties_free(g->props); - g->props = NULL; - } - - if (g->info) { - g->info_destroy(g->info); - g->info = NULL; - } + struct global *g = user_data; + if (g->props) + pw_properties_free(g->props); + if (g->info) + g->info_destroy(g->info); } static const struct pw_proxy_events proxy_events = { PW_VERSION_PROXY_EVENTS, + .removed = removed_proxy, .destroy = destroy_proxy, }; @@ -862,8 +863,10 @@ int main(int argc, char *argv[]) draw_graph(&data, dot_path); dot_str_clear(&data.dot_str); + pw_proxy_destroy((struct pw_proxy*)data.registry); pw_context_destroy(data.context); pw_main_loop_destroy(data.loop); + pw_deinit(); return 0; }