[evolution/gnome-3-22] Fix few memory leaks



commit 4c86c567c988759fa901e146f16ce6c0eebfeec7
Author: Milan Crha <mcrha redhat com>
Date:   Mon Jan 9 15:07:28 2017 +0100

    Fix few memory leaks

 calendar/gui/itip-utils.c                          |    6 +++++-
 e-util/e-name-selector-entry.c                     |    2 ++
 modules/itip-formatter/e-mail-formatter-itip.c     |   16 ++++++++++++----
 .../e-mail-display-popup-text-highlight.c          |   18 ++++++++++++++++++
 4 files changed, 37 insertions(+), 5 deletions(-)
---
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index c873e99..1d9091a 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -466,6 +466,8 @@ itip_get_comp_attendee (ESourceRegistry *registry,
 
                        g_free (address);
 
+                       g_list_free_full (list, g_object_unref);
+
                        return user_email;
                }
 
@@ -483,13 +485,15 @@ itip_get_comp_attendee (ESourceRegistry *registry,
 
                        g_free (address);
 
+                       g_list_free_full (list, g_object_unref);
+
                        return user_email;
                }
 
                g_free (address);
        }
 
-       g_list_free_full (list, (GDestroyNotify) g_object_unref);
+       g_list_free_full (list, g_object_unref);
 
        /* We could not find the attendee in the component, so just give
         * the default account address if the email address is not set in
diff --git a/e-util/e-name-selector-entry.c b/e-util/e-name-selector-entry.c
index 94b92a5..fa6561e 100644
--- a/e-util/e-name-selector-entry.c
+++ b/e-util/e-name-selector-entry.c
@@ -2065,6 +2065,8 @@ user_focus_in (ENameSelectorEntry *name_selector_entry,
        if (str->str && str->str[0])
                g_string_append (str, ", ");
 
+       g_clear_object (&dest_dummy);
+
        gtk_entry_set_text (GTK_ENTRY (name_selector_entry), str->str);
 
        g_string_free (str, TRUE);
diff --git a/modules/itip-formatter/e-mail-formatter-itip.c b/modules/itip-formatter/e-mail-formatter-itip.c
index 9ac5751..ab088ab 100644
--- a/modules/itip-formatter/e-mail-formatter-itip.c
+++ b/modules/itip-formatter/e-mail-formatter-itip.c
@@ -87,11 +87,11 @@ emfe_itip_format (EMailFormatterExtension *extension,
                itip_view_write (itip_part, formatter, buffer);
 
        } else {
-               CamelFolder *folder;
-               CamelMimeMessage *message;
+               CamelFolder *folder, *old_folder;
+               CamelMimeMessage *message, *old_message;
                const gchar *message_uid;
                const gchar *default_charset, *charset;
-               gchar *uri;
+               gchar *uri, *old_message_uid;
 
                folder = e_mail_part_list_get_folder (context->part_list);
                message = e_mail_part_list_get_message (context->part_list);
@@ -107,9 +107,17 @@ emfe_itip_format (EMailFormatterExtension *extension,
                                folder, message_uid, "$has_cal", TRUE);
                }
 
+               old_folder = itip_part->folder;
+               old_message = itip_part->message;
+               old_message_uid = itip_part->message_uid;
+
                itip_part->folder = g_object_ref (folder);
-               itip_part->message_uid = g_strdup (message_uid);
                itip_part->message = g_object_ref (message);
+               itip_part->message_uid = g_strdup (message_uid);
+
+               g_clear_object (&old_folder);
+               g_clear_object (&old_message);
+               g_free (old_message_uid);
 
                default_charset = e_mail_formatter_get_default_charset (formatter);
                charset = e_mail_formatter_get_charset (formatter);
diff --git a/modules/text-highlight/e-mail-display-popup-text-highlight.c 
b/modules/text-highlight/e-mail-display-popup-text-highlight.c
index a28932e..b5f54e7 100644
--- a/modules/text-highlight/e-mail-display-popup-text-highlight.c
+++ b/modules/text-highlight/e-mail-display-popup-text-highlight.c
@@ -329,6 +329,20 @@ update_actions (EMailDisplayPopupExtension *extension,
        }
 }
 
+static void
+e_mail_display_popup_text_highlight_finalize (GObject *object)
+{
+       EMailDisplayPopupTextHighlight *extension;
+
+       extension = E_MAIL_DISPLAY_POPUP_TEXT_HIGHLIGHT (object);
+
+       g_clear_object (&extension->action_group);
+       g_free (extension->document_uri);
+
+       /* Chain up to parent's method */
+       G_OBJECT_CLASS (e_mail_display_popup_text_highlight_parent_class)->finalize (object);
+}
+
 void
 e_mail_display_popup_text_highlight_type_register (GTypeModule *type_module)
 {
@@ -338,12 +352,16 @@ e_mail_display_popup_text_highlight_type_register (GTypeModule *type_module)
 static void
 e_mail_display_popup_text_highlight_class_init (EMailDisplayPopupTextHighlightClass *klass)
 {
+       GObjectClass *object_class;
        EExtensionClass *extension_class;
 
        e_mail_display_popup_text_highlight_parent_class = g_type_class_peek_parent (klass);
 
        extension_class = E_EXTENSION_CLASS (klass);
        extension_class->extensible_type = E_TYPE_MAIL_DISPLAY;
+
+       object_class = G_OBJECT_CLASS (klass);
+       object_class->finalize = e_mail_display_popup_text_highlight_finalize;
 }
 
 static void


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