diff options
-rw-r--r-- | mail/ChangeLog | 7 | ||||
-rw-r--r-- | mail/message-list.c | 20 |
2 files changed, 21 insertions, 6 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index b01374926d..e0af12df62 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,10 @@ +2004-01-20 Not Zed <NotZed@Ximian.com> + + ** See bug #52989. + + * message-list.c (hide_load_state): clear the hidden table if + setup, before loading. + 2004-01-19 Radek Doulik <rodo@ximian.com> * mail-config.c (MAIL_CONFIG_RC_DIR): path to gtkhtml's rc file diff --git a/mail/message-list.c b/mail/message-list.c index 601a617ac1..ebd072cdc3 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2989,16 +2989,23 @@ hide_load_state (MessageList *ml) FILE *in; guint32 version, lower, upper; + MESSAGE_LIST_LOCK(ml, hide_lock); + if (ml->hidden) { + g_hash_table_destroy (ml->hidden); + e_mempool_destroy (ml->hidden_pool); + ml->hidden = NULL; + ml->hidden_pool = NULL; + } + ml->hide_before = ML_HIDE_NONE_START; + ml->hide_after = ML_HIDE_NONE_END; + filename = mail_config_folder_to_cachename(ml->folder, "hidestate-"); in = fopen(filename, "r"); if (in) { camel_file_util_decode_fixed_int32 (in, &version); if (version == HIDE_STATE_VERSION) { - MESSAGE_LIST_LOCK(ml, hide_lock); - if (ml->hidden == NULL) { - ml->hidden = g_hash_table_new(g_str_hash, g_str_equal); - ml->hidden_pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE); - } + ml->hidden = g_hash_table_new(g_str_hash, g_str_equal); + ml->hidden_pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE); camel_file_util_decode_fixed_int32 (in, &lower); ml->hide_before = lower; camel_file_util_decode_fixed_int32 (in, &upper); @@ -3012,11 +3019,12 @@ hide_load_state (MessageList *ml) g_hash_table_insert(ml->hidden, uid, uid); } } - MESSAGE_LIST_UNLOCK(ml, hide_lock); } fclose(in); } g_free(filename); + + MESSAGE_LIST_UNLOCK(ml, hide_lock); } static void |