From 8ae4bf802aac4218ebfbe10cae09693ba64c05f3 Mon Sep 17 00:00:00 2001
From: David Woodhouse <David.Woodhouse@intel.com>
Date: Wed, 14 Jul 2010 11:54:01 +0100
Subject: Fix two memory leaks when replying

1: em_utils_reply_to_message() can be passed a newly-created message (from
a current selection. It needs to unref it. Which means that when we pass it
a message which *isn't* newly-created, we have to obtain a ref of our own.
It was that or add a boolean parameter to tell it whether to unref or not.

2: emf_finalize() wasn't unreferencing emf->message -- so when we clone
the EMFormat in em_utils_message_to_html() and immediately unreference the
clone, a refcount on the message got leaked. Fix emf_finalize() to unref
emf->message as presumably it should.
---
 mail/e-mail-reader-utils.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'mail/e-mail-reader-utils.c')

diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c
index 24655e72c7..8827375ed3 100644
--- a/mail/e-mail-reader-utils.c
+++ b/mail/e-mail-reader-utils.c
@@ -384,8 +384,11 @@ e_mail_reader_reply_to_message (EMailReader *reader, CamelMimeMessage *src_messa
 	if (!gtk_widget_get_mapped (GTK_WIDGET(web_view)))
 		goto whole_message;
 
-	if (!src_message)
+	if (!src_message) {
 		src_message = CAMEL_MIME_MESSAGE (EM_FORMAT (formatter)->message);
+		if (src_message)
+			g_object_ref(src_message);
+	}
 
 	if (!e_mail_reader_get_quote_from_selection (reader))
 		goto whole_message;
@@ -421,6 +424,7 @@ e_mail_reader_reply_to_message (EMailReader *reader, CamelMimeMessage *src_messa
 		CAMEL_MIME_PART (new_message),
 		selection, length, "text/html");
 
+	g_object_unref(src_message);
 	em_utils_reply_to_message (
 		folder, uid, new_message, reply_mode, NULL);
 
-- 
cgit