From bc054c94cb46e4f8f8881c2a1b0268e2f05b307b Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 18 May 2010 08:07:19 -0400 Subject: Bug 618902 - Crash when viewing/closing messages quickly Closing an EMailBrowser window causes it to be disposed immediately, but ongoing async operations still hold an EMailBrowser reference -- in particular, regenerating the internal message list and fetching a mail message. The callback functions for these operations were not equipped to deal with the disposed-but-not-yet-finalized object. --- mail/message-list.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'mail/message-list.c') diff --git a/mail/message-list.c b/mail/message-list.c index e09ac09b77..466d4c5777 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -4580,7 +4580,7 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca #endif m = mail_msg_new (®en_list_info); - m->ml = ml; + m->ml = g_object_ref (ml); m->search = g_strdup (search); m->hideexpr = g_strdup (hideexpr); m->changes = changes; @@ -4588,9 +4588,7 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca m->hidedel = ml->hidedeleted; m->hidejunk = ml->hidejunk; m->thread_subject = gconf_client_get_bool (gconf, "/apps/evolution/mail/display/thread_subject", NULL); - g_object_ref(ml); - m->folder = ml->folder; - g_object_ref (m->folder); + m->folder = g_object_ref (ml->folder); m->last_row = -1; m->expand_state = NULL; -- cgit v1.2.3