From 489e2955687bccb263e1ece3a1615b3356c990f2 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Tue, 13 Dec 2011 16:27:18 +0100 Subject: Fix some leaks --- src/pa-sink-ctl.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'src/pa-sink-ctl.c') diff --git a/src/pa-sink-ctl.c b/src/pa-sink-ctl.c index b4e3ef4..c3ea04e 100644 --- a/src/pa-sink-ctl.c +++ b/src/pa-sink-ctl.c @@ -173,6 +173,24 @@ sink_info_cb(pa_context *c, const pa_sink_info *i, compare_sink_priority); } +static void +sink_free(gpointer data) +{ + struct sink_info *sink = data; + + g_free(sink->name); + g_free(sink); +} + +static void +sink_input_free(gpointer data) +{ + struct sink_input_info *input = data; + + g_free(input->name); + g_free(input); +} + static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, guint32 idx, gpointer userdata) @@ -204,13 +222,13 @@ subscribe_cb(pa_context *c, pa_subscription_event_type_t t, case PA_SUBSCRIPTION_EVENT_SINK: object = find_sink_by_idx(ctx, idx); ctx->sink_list = g_list_remove(ctx->sink_list, object); - g_free(object); + sink_free(object); break; case PA_SUBSCRIPTION_EVENT_SINK_INPUT: object = find_sink_input_by_idx(ctx, idx); ctx->input_list = g_list_remove(ctx->input_list, object); - g_free(object); + sink_input_free(object); break; default: return; @@ -339,14 +357,16 @@ main(int argc, char** argv) g_main_loop_run(ctx->loop); interface_clear(ctx); - g_list_free_full(ctx->sink_list, g_free); - g_list_free_full(ctx->input_list, g_free); + g_list_free_full(ctx->sink_list, sink_free); + g_list_free_full(ctx->input_list, sink_input_free); pa_glib_mainloop_free(m); + pa_context_unref(ctx->context); g_main_loop_unref(ctx->loop); config_uninit(&ctx->config); + g_free(ctx); + return 0; } - -- cgit