aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog7
-rw-r--r--mail/message-list.c13
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,5 +1,12 @@
2008-12-15 Srinivasa Ragavan <sragavan@novell.com>
+ ** Fix for #546637
+
+ * message-list.c: (message_list_finalise), (regen_list_exec),
+ (regen_list_done): Don't loose uids.
+
+2008-12-15 Srinivasa Ragavan <sragavan@novell.com>
+
* em-format-html-display.c: (efhd_bonobo_unknown),
(efhd_find_handler), (efhd_bonobo_object),
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;