aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog9
-rw-r--r--mail/folder-browser.c6
-rw-r--r--mail/message-list.c12
3 files changed, 26 insertions, 1 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 3ccb9933bf..9539b16548 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,12 @@
+2002-09-10 Not Zed <NotZed@Ximian.com>
+
+ * folder-browser.c (got_folder): If we already have a folder, make
+ sure we unref/unhook from it. Fixes a crash on exit.
+
+ * message-list.c (message_list_hide_clear): clear thread tree
+ cache if set.
+ (message_list_set_search): Same. For bug #28834.
+
2002-09-09 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser-ui.c (folder_browser_ui_scan_selection): Make
diff --git a/mail/folder-browser.c b/mail/folder-browser.c
index ebc91cdda9..0d31cb479a 100644
--- a/mail/folder-browser.c
+++ b/mail/folder-browser.c
@@ -845,6 +845,12 @@ got_folder (char *uri, CamelFolder *folder, void *data)
if (fb->message_list == NULL)
goto done;
+
+ if (fb->folder) {
+ camel_object_unhook_event(fb->folder, "folder_changed", folder_changed, fb);
+ camel_object_unhook_event(fb->folder, "message_changed", folder_changed, fb);
+ camel_object_unref(fb->folder);
+ }
fb->folder = folder;
if (folder == NULL)
diff --git a/mail/message-list.c b/mail/message-list.c
index a719983588..f19b0cc5dd 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -2322,6 +2322,11 @@ message_list_set_search (MessageList *ml, const char *search)
if (search != NULL && ml->search != NULL && strcmp (search, ml->search) == 0)
return;
+
+ if (ml->thread_tree) {
+ camel_folder_thread_messages_unref(ml->thread_tree);
+ ml->thread_tree = NULL;
+ }
mail_regen_list (ml, search, NULL, NULL);
}
@@ -2443,7 +2448,12 @@ message_list_hide_clear (MessageList *ml)
ml->hide_before = ML_HIDE_NONE_START;
ml->hide_after = ML_HIDE_NONE_END;
MESSAGE_LIST_UNLOCK (ml, hide_lock);
-
+
+ if (ml->thread_tree) {
+ camel_folder_thread_messages_unref(ml->thread_tree);
+ ml->thread_tree = NULL;
+ }
+
mail_regen_list (ml, ml->search, NULL, NULL);
}