From 4a639d92a6f1a5dd8f59d57ade37d4cff420b66a Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Tue, 13 Mar 2007 11:41:31 -0400 Subject: various leak fixes --- src/ck-manager.c | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) (limited to 'src/ck-manager.c') diff --git a/src/ck-manager.c b/src/ck-manager.c index 9b51000..8e66419 100644 --- a/src/ck-manager.c +++ b/src/ck-manager.c @@ -375,6 +375,11 @@ find_seat_for_session (CkManager *manager, g_free (sid); } + g_free (display_device); + g_free (x11_display_device); + g_free (x11_display); + g_free (remote_host_name); + return seat; } @@ -627,6 +632,8 @@ add_param_int (GPtrArray *parameters, 0, key, 1, &val, G_MAXUINT); + g_value_unset (&val); + g_ptr_array_add (parameters, g_value_get_boxed (¶m_val)); } @@ -654,6 +661,8 @@ add_param_boolean (GPtrArray *parameters, 0, key, 1, &val, G_MAXUINT); + g_value_unset (&val); + g_ptr_array_add (parameters, g_value_get_boxed (¶m_val)); } @@ -676,6 +685,8 @@ add_param_string (GPtrArray *parameters, 0, key, 1, &val, G_MAXUINT); + g_value_unset (&val); + g_ptr_array_add (parameters, g_value_get_boxed (¶m_val)); } @@ -716,6 +727,7 @@ parse_output (const char *output) vals = g_strsplit (lines[i], " = ", 2); if (vals == NULL || vals[0] == NULL) { + g_strfreev (vals); continue; } @@ -728,6 +740,8 @@ parse_output (const char *output) g_strfreev (vals); } + g_strfreev (lines); + return parameters; } @@ -744,6 +758,22 @@ job_data_free (JobData *data) g_free (data); } +static void +parameters_free (GPtrArray *parameters) +{ + int i; + + for (i = 0; i < parameters->len; i++) { + gpointer data; + data = g_ptr_array_index (parameters, i); + if (data != NULL) { + g_boxed_free (CK_TYPE_PARAMETER_STRUCT, data); + } + } + + g_ptr_array_free (parameters, TRUE); +} + static void job_completed (CkJob *job, int status, @@ -765,9 +795,7 @@ job_completed (CkJob *job, data->leader_info, parameters, data->context); - - g_ptr_array_free (parameters, TRUE); - + parameters_free (parameters); } /* remove job from queue */ @@ -886,6 +914,9 @@ create_session_for_sender (CkManager *manager, context); } + g_free (cookie); + g_free (ssid); + return TRUE; } @@ -1192,6 +1223,7 @@ remove_session_for_cookie (CkManager *manager, g_hash_table_remove (manager->priv->sessions, ssid); + g_free (sid); g_free (ssid); manager_update_system_idle_hint (manager); -- cgit