Fix leaks found by valgrind
authorDan Winship <danw@gnome.org>
Sat, 13 Mar 2010 16:57:09 +0000 (11:57 -0500)
committerDan Winship <danw@gnome.org>
Sat, 13 Mar 2010 16:57:09 +0000 (11:57 -0500)
Also, simply the suppressions file by using the "..." syntax, which I
think didn't exist (or at least wasn't documented) when I first
created it.

libsoup/soup-address.c
libsoup/soup-content-decoder.c
libsoup/soup-gnutls.c
libsoup/soup-session.c
tests/coding-test.c
tests/cookies-test.c
tests/header-parsing.c
tests/libsoup.supp

index b7e07a0..605a51b 100644 (file)
@@ -612,7 +612,7 @@ complete_resolve_async (SoupAddress *addr, guint status)
                }
                g_slice_free (SoupAddressResolveAsyncData, res_data);
        }
-       g_slist_free (l);
+       g_slist_free (lookups);
 
        g_object_unref (addr);
 }
index a460c50..24ea751 100644 (file)
@@ -58,6 +58,8 @@ static void soup_content_decoder_session_feature_init (SoupSessionFeatureInterfa
 static void request_queued (SoupSessionFeature *feature, SoupSession *session, SoupMessage *msg);
 static void request_unqueued (SoupSessionFeature *feature, SoupSession *session, SoupMessage *msg);
 
+static void finalize (GObject *object);
+
 G_DEFINE_TYPE_WITH_CODE (SoupContentDecoder, soup_content_decoder, G_TYPE_OBJECT,
                         G_IMPLEMENT_INTERFACE (SOUP_TYPE_SESSION_FEATURE,
                                                soup_content_decoder_session_feature_init))
@@ -83,7 +85,11 @@ soup_content_decoder_init (SoupContentDecoder *decoder)
 static void
 soup_content_decoder_class_init (SoupContentDecoderClass *decoder_class)
 {
-  g_type_class_add_private (decoder_class, sizeof (SoupContentDecoderPrivate));
+       GObjectClass *object_class = G_OBJECT_CLASS (decoder_class);
+
+       g_type_class_add_private (decoder_class, sizeof (SoupContentDecoderPrivate));
+
+       object_class->finalize = finalize;
 }
 
 static void
@@ -95,6 +101,16 @@ soup_content_decoder_session_feature_init (SoupSessionFeatureInterface *feature_
 }
 
 static void
+finalize (GObject *object)
+{
+       SoupContentDecoder *decoder = SOUP_CONTENT_DECODER (object);
+
+       g_hash_table_destroy (decoder->priv->codings);
+
+       G_OBJECT_CLASS (soup_content_decoder_parent_class)->finalize (object);
+}
+
+static void
 soup_content_decoder_got_headers_cb (SoupMessage *msg, SoupContentDecoder *decoder)
 {
        SoupMessagePrivate *msgpriv = SOUP_MESSAGE_GET_PRIVATE (msg);
index 1b6e613..ac22d95 100644 (file)
@@ -112,6 +112,7 @@ verify_certificate (gnutls_session session, const char *hostname, GError **err)
                        session, &cert_list_size);
 
                if (cert_list == NULL) {
+                       gnutls_x509_crt_deinit (cert);
                        g_set_error (err, SOUP_SSL_ERROR,
                                     SOUP_SSL_ERROR_CERTIFICATE,
                                     "No SSL certificate was found.");
@@ -120,6 +121,7 @@ verify_certificate (gnutls_session session, const char *hostname, GError **err)
 
                if (gnutls_x509_crt_import (cert, &cert_list[0],
                                            GNUTLS_X509_FMT_DER) < 0) {
+                       gnutls_x509_crt_deinit (cert);
                        g_set_error (err, SOUP_SSL_ERROR,
                                     SOUP_SSL_ERROR_CERTIFICATE,
                                     "The SSL certificate could not be parsed.");
@@ -127,11 +129,14 @@ verify_certificate (gnutls_session session, const char *hostname, GError **err)
                }
 
                if (!gnutls_x509_crt_check_hostname (cert, hostname)) {
+                       gnutls_x509_crt_deinit (cert);
                        g_set_error (err, SOUP_SSL_ERROR,
                                     SOUP_SSL_ERROR_CERTIFICATE,
                                     "The SSL certificate does not match the hostname.");
                        return FALSE;
                }
+
+               gnutls_x509_crt_deinit (cert);
        }
 
        return TRUE;
index 009d702..59342e9 100644 (file)
@@ -226,6 +226,8 @@ finalize (GObject *object)
        g_free (priv->user_agent);
        g_free (priv->accept_language);
 
+       if (priv->ssl_ca_file)
+               g_free (priv->ssl_ca_file);
        if (priv->ssl_creds)
                soup_ssl_free_client_credentials (priv->ssl_creds);
 
@@ -1145,6 +1147,8 @@ redirect_handler (SoupMessage *msg, gpointer user_data)
         */
        new_uri = soup_uri_new_with_base (soup_message_get_uri (msg), new_loc);
        if (!new_uri || !new_uri->host) {
+               if (new_uri)
+                       soup_uri_free (new_uri);
                soup_message_set_status_full (msg,
                                              SOUP_STATUS_MALFORMED,
                                              "Invalid Redirect URL");
index e0dae15..288052e 100644 (file)
@@ -49,6 +49,7 @@ server_callback (SoupServer *server, SoupMessage *msg,
                        file = NULL;
                }
        }
+       soup_header_free_list (codings);
 
        if (!file)
                file = g_strdup_printf (SRCDIR "/resources%s", path);
@@ -57,9 +58,11 @@ server_callback (SoupServer *server, SoupMessage *msg,
                 * the error with "Content-Encoding: gzip" but there's
                 * no body, so, eh.
                 */
+               g_free (file);
                soup_message_set_status (msg, SOUP_STATUS_NOT_FOUND);
                return;
        }
+       g_free (file);
 
        soup_message_set_status (msg, SOUP_STATUS_OK);
        soup_message_body_append (msg->response_body,
index 4e0c4d1..fa9f5b0 100644 (file)
@@ -87,8 +87,10 @@ do_cookies_accept_policy_test (void)
                    errors++;
            }
 
-           for (p = l; p; p = p->next)
+           for (p = l; p; p = p->next) {
                soup_cookie_jar_delete_cookie (jar, p->data);
+               soup_cookie_free (p->data);
+           }
 
            g_slist_free (l);
        }
index 0086b22..e8799b3 100644 (file)
@@ -1026,6 +1026,7 @@ do_bad_header_tests (void)
                        errors++;
                }
        }
+       soup_message_headers_free (hdrs);
 }
 
 int
index 8316da9..9b98593 100644 (file)
 # valgrind suppressions file
 
 {
-   glib/g_quark_new_1
+   glib/g_type_init
    Memcheck:Leak
-   fun:*
-   fun:g_quark_new
+   ...
+   fun:g_type_init
 }
 {
-   glib/g_quark_new_2
+   glib/g_thread_init
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_quark_new
+   ...
+   fun:g_thread_init
 }
 {
-   glib/g_quark_new_3
+   glib/g_type_register_static
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_new
-}
-{
-   glib/g_quark_new_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_new
-}
-{
-   glib/g_quark_new_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_new
-}
-{
-   glib/g_quark_new_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_new
-}
-{
-   glib/g_quark_from_static_string_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_from_static_string
-}
-{
-   glib/g_quark_from_static_string_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_from_static_string
-}
-{
-   glib/g_quark_from_string_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_from_string
-}
-{
-   glib/g_quark_from_string_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_quark_from_string
-}
-{
-   glib/g_type_init_with_debug_flags_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_type_init_with_debug_flags
-}
-{
-   glib/g_type_init_with_debug_flags_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_init_with_debug_flags
-}
-{
-   glib/g_type_init_with_debug_flags_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_init_with_debug_flags
-}
-{
-   glib/g_type_init_with_debug_flags_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_init_with_debug_flags
-}
-{
-   glib/g_type_init_with_debug_flags_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_init_with_debug_flags
-}
-{
-   glib/g_type_init_with_debug_flags_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_init_with_debug_flags
-}
-{
-   glib/g_object_class_install_property_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_object_class_install_property
-}
-{
-   glib/g_object_class_install_property_8
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_object_class_install_property
-}
-{
-   glib/g_param_spec_types_init_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_param_spec_types_init
-}
-{
-   glib/g_param_spec_types_init_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_param_spec_types_init
-}
-{
-   glib/g_param_spec_types_init_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_param_spec_types_init
-}
-{
-   glib/g_param_spec_internal_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_param_spec_internal
-}
-{
-   glib/g_type_register_static_1
-   Memcheck:Leak
-   fun:*
+   ...
    fun:g_type_register_static
 }
 {
-   glib/g_type_register_static_2
+   glib/g_boxed_type_register_static
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_static_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_static_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_static_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_static_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_static_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_static_8
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_static
-}
-{
-   glib/g_type_register_fundamental_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_fundamental
-}
-{
-   glib/g_type_register_fundamental_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_fundamental
-}
-{
-   glib/g_type_register_fundamental_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_fundamental
-}
-{
-   glib/g_type_register_fundamental_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_register_fundamental
-}
-{
-   glib/g_type_add_interface_static_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_add_interface_static
-}
-{
-   glib/g_type_add_interface_static_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_add_interface_static
-}
-{
-   glib/g_type_add_interface_static_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_add_interface_static
-}
-{
-   glib/g_boxed_type_register_static_2
-   Memcheck:Leak
-   fun:*
-   fun:*
+   ...
    fun:g_boxed_type_register_static
 }
 {
-   glib/g_signal_newv_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_signal_newv
-}
-{
-   glib/g_signal_newv_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_signal_newv
-}
-{
-   glib/g_signal_newv_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_signal_newv
-}
-{
-   glib/g_signal_newv_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_signal_newv
-}
-{
-   glib/g_signal_new_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_signal_new
-}
-{
-   glib/g_signal_new_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_signal_new
-}
-{
-   glib/g_signal_handlers_destroy_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_signal_handlers_destroy
-}
-{
-   glib/g_get_language_names_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_get_language_names
-}
-{
-   glib/g_get_language_names_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_get_language_names
-}
-{
-   glib/g_get_language_names_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_get_language_names
-}
-{
-   glib/g_get_language_names_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_get_language_names
-}
-{
-   glib/g_get_language_names_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_get_language_names
-}
-{
-   glib/g_get_language_names_8
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_get_language_names
-}
-{
-   glib/g_intern_static_string_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_intern_static_string
-}
-{
-   glib/g_intern_static_string_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_intern_static_string
-}
-{
-   glib/g_intern_string_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_intern_string
-}
-{
-   glib/g_intern_string_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_intern_string
-}
-{
-   glib/g_thread_init_glib_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_thread_init_glib
-}
-{
-   glib/g_thread_init_glib_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_thread_init_glib
-}
-{
-   glib/g_thread_init_glib_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_thread_init_glib
-}
-{
-   glib/g_thread_init_glib_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_thread_init_glib
-}
-{
-   glib/g_thread_init_glib_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_thread_init_glib
-}
-{
-   glib/g_thread_init_glib_8
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_thread_init_glib
-}
-{
-   glib/g_type_class_ref_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_6
+   glib/g_type_add_interface_static
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_8
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_class_ref_9
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_class_ref
-}
-{
-   glib/g_type_interface_add_prerequisite_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_type_interface_add_prerequisite
+   ...
+   fun:g_type_add_interface_static
 }
 {
-   glib/g_type_interface_add_prerequisite_4
+   glib/g_type_interface_add_prerequisite
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
+   ...
    fun:g_type_interface_add_prerequisite
 }
 {
-   glib/g_data_initialize_3
+   glib/g_type_class_ref
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_data_initialize
+   ...
+   fun:g_type_class_ref
 }
 {
-   glib/g_data_initialize_4
+   glib/g_set_prgname
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_data_initialize
+   ...
+   fun:g_set_prgname
 }
 {
-   glib/g_data_initialize_5
+   glib/g_intern_string
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_data_initialize
+   ...
+   fun:g_intern_string
 }
 {
-   glib/g_static_rw_lock_writer_lock_3
+   glib/g_intern_static_string
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_static_rw_lock_writer_lock
+   ...
+   fun:g_intern_static_string
 }
 {
-   glib/g_set_prgname_3
+   glib/g_quark_from_string
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_set_prgname
+   ...
+   fun:g_quark_from_string
 }
 {
-   glib/get_dispatch_4
+   glib/get_dispatch
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
+   ...
    fun:get_dispatch
+   fun:g_main_context_dispatch
 }
 {
-   glib/g_child_watch_source_init_multi_threaded_3
+   glib/g_signal_handlers_destroy
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_child_watch_source_init_multi_threaded
+   ...
+   fun:g_signal_handlers_destroy
 }
 {
-   glib/g_child_watch_source_init_multi_threaded_5
+   glib/g_data_initialize
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_child_watch_source_init_multi_threaded
+   ...
+   fun:g_data_initialize
 }
 {
-   glib/g_static_private_set_4
+   glib/g_static_private_set
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
+   ...
    fun:g_static_private_set
 }
 {
-   glib/g_main_context_push_thread_default_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_queue_new
-   fun:g_main_context_push_thread_default
-}
-{
-   glib/g_resolver_get_default_9
+   glib/g_child_watch_source_init_multi_threaded
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_resolver_get_default
-}
-{
-   glib/g_threaded_resolver_init_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_threaded_resolver_init
-}
-{
-   glib/g_threaded_resolver_init_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_threaded_resolver_init
-}
-{
-   glib/g_threaded_resolver_init_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:g_threaded_resolver_init
-}
-{
-   glib/xdg_mime_init_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:xdg_mime_init
-}
-{
-   glib/xdg_mime_init_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:xdg_mime_init
-}
-{
-   glib/xdg_mime_init_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:xdg_mime_init
-}
-{
-   glib/xdg_mime_init_8
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:xdg_mime_init
-}
-{
-   glib/xdg_mime_init_9
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:xdg_mime_init
+   ...
+   fun:g_child_watch_source_init_multi_threaded
 }
 {
-   glib/xdg_mime_init_10
+   glib/xdg_mime_init
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
+   ...
    fun:xdg_mime_init
 }
 {
-   glib/xdg_mime_init_11
+   glib/GResolver
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:xdg_mime_init
+   ...
+   fun:g_resolver_get_default
 }
 
-
+# probably using uninitialized memory as padding or something
 {
-   libxml2/xmlInitCharEncodingHandlers_1
-   Memcheck:Leak
-   fun:*
-   fun:xmlInitCharEncodingHandlers
-}
-{
-   libxml2/xmlInitCharEncodingHandlers_2
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:xmlInitCharEncodingHandlers
-}
-{
-   libxml2/xmlInitCharEncodingHandlers_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:xmlInitCharEncodingHandlers
-}
-{
-   libxml2/xmlInitializeDict
-   Memcheck:Leak
-   fun:malloc
-   fun:xmlNewRMutex
-   fun:xmlDictCreate
-}
-{
-   libxml2/xmlInitParser_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:xmlInitParser
+   gnutls/handshake
+   Memcheck:Cond
+   ...
+   fun:gnutls_handshake
 }
 
-
-{
-   gnutls/gnutls_global_init_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_global_init
-}
 {
-   gnutls/gnutls_global_init_4
+   libxml2/xmlInitParser
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_global_init
-}
-{
-   gnutls/gnutls_global_init_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_global_init
-}
-{
-   gnutls/gnutls_global_init_7
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_global_init
-}
-{
-   gnutls/gnutls_global_init_9
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_global_init
-}
-{
-   gnutls/gnutls_global_init_11
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_global_init
-}
-{
-   gnutls/soup_gnutls_init_gcry_control_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gcry_control
-   fun:soup_gnutls_init
-}
-{
-   gnutls/soup_gnutls_init_gcry_control_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gcry_control
-   fun:soup_gnutls_init
+   ...
+   fun:xmlInitParser
 }
 {
-   gnutls/soup_gnutls_init_gcry_control_7
+   libxml2/xmlInitializeDict
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gcry_control
-   fun:soup_gnutls_init
+   ...
+   fun:xmlInitializeDict
 }
 {
-   gnutls/soup_gnutls_init_gcry_control_8
+   libxml2/xmlInitCharEncodingHandlers
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gcry_control
-   fun:soup_gnutls_init
+   ...
+   fun:xmlInitCharEncodingHandlers
 }
 {
-   gnutls/soup_gnutls_init_gcry_control_9
+   libsoup/gnutls_1
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gcry_control
+   ...
    fun:soup_gnutls_init
 }
 {
-   gnutls/gnutls_handshake_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_handshake
-}
-{
-   gnutls/gnutls_handshake_6
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_handshake
-}
-{
-   gnutls/init_dh_params_1
+   libsoup/gnutls_2
    Memcheck:Leak
-   fun:*
-   fun:gnutls_dh_params_init
+   ...
    fun:init_dh_params
 }
 {
-   gnutls/init_dh_params_8
+   libsoup/gnutls_mutexes
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_dh_params_generate2
-   fun:init_dh_params
+   ...
+   fun:gcry_pthread_mutex_init
 }
 {
-   gnutls/init_dh_params_9
+   libsoup/interned_uri_schemes
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_dh_params_generate2
-   fun:init_dh_params
-}
-{
-   gnutls/init_dh_params_10
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_dh_params_generate2
-   fun:init_dh_params
-}
-{
-   gnutls/init_dh_params_11
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_dh_params_generate2
-   fun:init_dh_params
-}
-{
-   gnutls/init_dh_params_12
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:gnutls_dh_params_generate2
-   fun:init_dh_params
-}
-
-{
-   libsoup/intern_header_name_3
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:intern_header_name
-}
-{
-   libsoup/intern_header_name_4
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:intern_header_name
-}
-{
-   libsoup/intern_header_name_5
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:intern_header_name
+   ...
+   fun:g_ascii_strdown
+   fun:soup_uri_get_scheme
 }
 {
-   libsoup/intern_header_name_7
+   libsoup/interned_headers
    Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
-   fun:*
+   ...
    fun:intern_header_name
 }
-{
-   libsoup/soup_uri_get_scheme
-   Memcheck:Leak
-   fun:*
-   fun:*
-   fun:*
-   fun:g_ascii_strdown
-   fun:soup_uri_get_scheme
-}