[telepathy-account-widgets] Properly fix tp_list_connection_managers_finish() leak



commit a46f4319089a27b5948a8941201a2de3d442e487
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Wed Jul 29 09:59:21 2015 +0200

    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

 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 73a3b45..f72c108 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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]