[evolution] Fix few memory leaks, mostly around gtk_..._new_with_model()



commit cf5a87be82b101d67ec10614f55355cc7a7342a5
Author: Milan Crha <mcrha redhat com>
Date:   Wed Jul 4 14:07:12 2018 +0200

    Fix few memory leaks, mostly around gtk_..._new_with_model()

 src/e-util/e-table-config.c            |  1 +
 src/e-util/test-contact-store.c        |  2 ++
 src/mail/e-mail-config-assistant.c     |  2 +-
 src/mail/e-mail-config-provider-page.c |  1 +
 src/mail/em-vfolder-editor-rule.c      | 13 ++++++++++++-
 5 files changed, 17 insertions(+), 2 deletions(-)
---
diff --git a/src/e-util/e-table-config.c b/src/e-util/e-table-config.c
index 8317c49fe0..0243702ccc 100644
--- a/src/e-util/e-table-config.c
+++ b/src/e-util/e-table-config.c
@@ -647,6 +647,7 @@ e_table_proxy_gtk_combo_text_new (void)
 
        store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
        combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+       g_object_unref (store);
 
        renderer = gtk_cell_renderer_text_new ();
        gtk_cell_layout_pack_start (
diff --git a/src/e-util/test-contact-store.c b/src/e-util/test-contact-store.c
index d62836c7dc..cf391022a1 100644
--- a/src/e-util/test-contact-store.c
+++ b/src/e-util/test-contact-store.c
@@ -118,6 +118,8 @@ start_test (const gchar *param)
 
        g_signal_connect (entry, "changed", G_CALLBACK (entry_changed), contact_store);
 
+       g_object_unref (contact_store);
+
        gtk_widget_show_all (window);
 
        return FALSE;
diff --git a/src/mail/e-mail-config-assistant.c b/src/mail/e-mail-config-assistant.c
index 8aba8afb27..5307f1f90e 100644
--- a/src/mail/e-mail-config-assistant.c
+++ b/src/mail/e-mail-config-assistant.c
@@ -208,7 +208,7 @@ mail_config_assistant_list_providers (void)
        }
 
        while ((link = g_queue_pop_head (&trash)) != NULL)
-               list = g_list_remove_link (list, link);
+               list = g_list_delete_link (list, link);
 
        return list;
 }
diff --git a/src/mail/e-mail-config-provider-page.c b/src/mail/e-mail-config-provider-page.c
index 417075771e..0e46b12718 100644
--- a/src/mail/e-mail-config-provider-page.c
+++ b/src/mail/e-mail-config-provider-page.c
@@ -456,6 +456,7 @@ mail_config_provider_page_add_options (EMailConfigProviderPage *page,
        gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo);
        gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 0);
        gtk_widget_show (combo);
+       g_object_unref (store);
 
        e_binding_bind_property_full (
                settings, entry->name,
diff --git a/src/mail/em-vfolder-editor-rule.c b/src/mail/em-vfolder-editor-rule.c
index 8385c4c3a9..559903c62f 100644
--- a/src/mail/em-vfolder-editor-rule.c
+++ b/src/mail/em-vfolder-editor-rule.c
@@ -211,6 +211,17 @@ struct _source_data {
        GtkWidget *buttons[BUTTON_LAST];
 };
 
+static void
+source_data_free (gpointer ptr)
+{
+       struct _source_data *sd = ptr;
+
+       if (sd) {
+               g_clear_object (&sd->model);
+               g_free (sd);
+       }
+}
+
 static void
 set_sensitive (struct _source_data *data)
 {
@@ -517,7 +528,7 @@ get_widget (EFilterRule *fr,
        gtk_orientable_set_orientation (GTK_ORIENTABLE (frame), GTK_ORIENTATION_VERTICAL);
        gtk_grid_set_row_spacing (GTK_GRID (frame), 6);
 
-       g_object_set_data_full (G_OBJECT (frame), "data", data, g_free);
+       g_object_set_data_full (G_OBJECT (frame), "data", data, source_data_free);
 
        tmp = g_strdup_printf ("<b>%s</b>", _("Search Folder Sources"));
        label = gtk_label_new (tmp);


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