diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2015-07-29 09:59:21 +0200 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2015-07-30 11:44:29 +0200 |
commit | a46f4319089a27b5948a8941201a2de3d442e487 (patch) | |
tree | 4410a7eea819644e79a6af0358264170a4491489 /tp-account-widgets | |
parent | 6a4a30ff016b31cf366daa1e1854e20da45bf9fa (diff) | |
download | telepathy-account-widgets-a46f4319089a27b5948a8941201a2de3d442e487.tar.gz |
Properly fix tp_list_connection_managers_finish() leak
Commit 103ed6232 attempted to fix a leak in tp_list_connection_managers_finish() but it was
incomplete as it only freed the returned GList with g_list_free() while
the list elements must be freed too. This commit addresses that using
g_list_free_full()
==9013== at 0x4A06C50: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==9013== by 0x7F150AC: g_malloc (gmem.c:97)
==9013== by 0x7F2E0F7: g_slice_alloc (gslice.c:1007)
==9013== by 0x7F091B7: g_list_copy_deep (glist.c:678)
==9013== by 0x7F09184: g_list_copy (glist.c:633)
==9013== by 0x370B157A64: _tp_g_list_copy_deep (util.c:2117)
==9013== by 0x4FB06C5: tpaw_connection_managers_listed_cb (tpaw-connection-managers.c:209)
==9013== by 0x7929107: g_simple_async_result_complete (gsimpleasyncresult.c:801)
==9013== by 0x7929153: complete_in_idle_cb (gsimpleasyncresult.c:813)
==9013== by 0x7F0F470: g_idle_dispatch (gmain.c:5397)
==9013== by 0x7F0CAB8: g_main_dispatch (gmain.c:3122)
==9013== by 0x7F0D8FC: g_main_context_dispatch (gmain.c:3737)
==9013== by 0x7F0DAE0: g_main_context_iterate (gmain.c:3808)
==9013== by 0x7F0DF06: g_main_loop_run (gmain.c:4002)
==9013== by 0x4F803F3: wait_for_account_settings_ready (goatelepathyprovider.c:102)
==9013== by 0x4F8127F: edit_connection_parameters (goatelepathyprovider.c:534)
==9013== by 0x4F81F16: edit_parameters_clicked_cb (goatelepathyprovider.c:835)
==9013== by 0x7C7727D: g_cclosure_marshal_VOID__VOIDv (gmarshal.c:905)
==9013== by 0x7C744D1: _g_closure_invoke_va (gclosure.c:864)
==9013== by 0x7C8F771: g_signal_emit_valist (gsignal.c:3246)
==9013== by 0x7C908E9: g_signal_emit (gsignal.c:3393)
==9013== by 0x6838A45: gtk_button_clicked (gtkbutton.c:1488)
==9013== by 0x6839966: gtk_button_do_release (gtkbutton.c:1899)
==9013== by 0x6839D45: gtk_real_button_released (gtkbutton.c:2017)
==9013== by 0x7C7727D: g_cclosure_marshal_VOID__VOIDv (gmarshal.c:905)
==9013== by 0x7C7490F: g_type_class_meta_marshalv (gclosure.c:1021)
==9013== by 0x7C744D1: _g_closure_invoke_va (gclosure.c:864)
==9013== by 0x7C8F771: g_signal_emit_valist (gsignal.c:3246)
==9013== by 0x7C908E9: g_signal_emit (gsignal.c:3393)
==9013== by 0x68364F5: multipress_released_cb (gtkbutton.c:613)
==9013== by 0x36E5A05DAF: ffi_call_unix64 (unix64.S:76)
==9013== by 0x36E5A05817: ffi_call (ffi64.c:525)
==9013== by 0x7C75F7C: g_cclosure_marshal_generic_va (gclosure.c:1594)
==9013== by 0x7C744D1: _g_closure_invoke_va (gclosure.c:864)
==9013== by 0x7C8F771: g_signal_emit_valist (gsignal.c:3246)
==9013== by 0x7C908E9: g_signal_emit (gsignal.c:3393)
==9013== by 0x69303DB: gtk_gesture_multi_press_end (gtkgesturemultipress.c:273)
==9013== by 0x7C78B90: g_cclosure_marshal_VOID__BOXEDv (gmarshal.c:1950)
==9013== by 0x7C7490F: g_type_class_meta_marshalv (gclosure.c:1021)
==9013== by 0x7C744D1: _g_closure_invoke_va (gclosure.c:864)
https://bugzilla.gnome.org/show_bug.cgi?id=752938
Diffstat (limited to 'tp-account-widgets')
-rw-r--r-- | tp-account-widgets/tpaw-connection-managers.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tp-account-widgets/tpaw-connection-managers.c b/tp-account-widgets/tpaw-connection-managers.c index 73a3b452..f72c1081 100644 --- a/tp-account-widgets/tpaw-connection-managers.c +++ b/tp-account-widgets/tpaw-connection-managers.c @@ -223,7 +223,7 @@ tpaw_connection_managers_listed_cb (GObject *source, self->priv->cms = g_list_prepend (self->priv->cms, g_object_ref (cm)); } - g_list_free (cms); + g_list_free_full (cms, g_object_unref); out: if (!self->priv->ready) |