From 3529d0384d97e4ce36843b1d6af6dc82b3a27930 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Mon, 15 Dec 2008 06:53:32 +0000 Subject: ** Fix for #546637 2008-12-15 Srinivasa Ragavan ** Fix for #546637 * message-list.c: (message_list_finalise), (regen_list_exec), (regen_list_done): Don't loose uids. svn path=/trunk/; revision=36886 --- mail/ChangeLog | 7 +++++++ mail/message-list.c | 13 ++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/mail/ChangeLog b/mail/ChangeLog index 6fd6d08045..31014c3f93 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,10 @@ +2008-12-15 Srinivasa Ragavan + + ** Fix for #546637 + + * message-list.c: (message_list_finalise), (regen_list_exec), + (regen_list_done): Don't loose uids. + 2008-12-15 Srinivasa Ragavan diff --git a/mail/message-list.c b/mail/message-list.c index 70795478bf..0ac1bc7844 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2359,6 +2359,11 @@ message_list_finalise (GObject *object) g_hash_table_destroy (message_list->normalised_hash); + if (message_list->ensure_uid) { + g_free (message_list->ensure_uid); + message_list->ensure_uid = NULL; + } + if (message_list->thread_tree) camel_folder_thread_messages_unref(message_list->thread_tree); @@ -4031,13 +4036,11 @@ regen_list_exec (struct _regen_list_msg *m) uids = camel_folder_get_uids (m->folder); } else { searchuids = uids = camel_folder_search_by_expression (m->folder, expr, &m->base.ex); - /* If m->changes is not NULL, then it means we are called from folder_changed event, thus we will keep the selected message to be sure it doesn't disappear because it no longer belong to our search filter. */ - if (uids && m->ml->search && ((m->changes && m->ml->cursor_uid) || m->ml->ensure_uid)) { + if (uids && ((m->changes && m->ml->cursor_uid) || m->ml->ensure_uid)) { const char *looking_for = m->ml->cursor_uid; - /* ensure_uid has precedence of cursor_uid */ if (m->ml->ensure_uid) looking_for = m->ml->ensure_uid; @@ -4202,10 +4205,6 @@ regen_list_done (struct _regen_list_msg *m) if (m->ml->priv->destroyed) return; - if (m->ml->ensure_uid) { - g_free (m->ml->ensure_uid); - m->ml->ensure_uid = NULL; - } if (!m->complete) return; -- cgit v1.2.3