diff options
-rw-r--r-- | camel/ChangeLog | 11 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-folder.c | 21 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 2 |
3 files changed, 23 insertions, 11 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 62ee62055e..9a96178ae7 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,12 @@ +2000-10-17 Dan Winship <danw@helixcode.com> + + * providers/imap/camel-imap-folder.c (imap_refresh_info): Remove + cached info at the end of the summary when the folder shrinks + between sessions. Also remove an untrue comment. + + * providers/imap/camel-imap-store.c (get_folder): Fix up + summary_file to not include the namespace twice. + 2000-10-17 Jeffrey Stedfast <fejj@helixcode.com> * camel-mime-part.c (set_header): Encode the header value. @@ -68,7 +77,6 @@ the possibility of not getting a LIST response back for the top level. ->>>>>>> 1.531 2000-10-12 Dan Winship <danw@helixcode.com> * providers/imap/camel-imap-summary.c: Simple subclass of @@ -118,7 +126,6 @@ (camel-mime-parser.c doesn't use this code because of the MEMPOOL optimization, so nothing was ever actually calling it before.) ->>>>>>> 1.529 2000-10-11 Not Zed <NotZed@HelixCode.com> * camel-mime-part.h (struct _CamelMimePart): Removed diff --git a/camel/providers/imap/camel-imap-folder.c b/camel/providers/imap/camel-imap-folder.c index fcb6cba5a2..16533dbc1c 100644 --- a/camel/providers/imap/camel-imap-folder.c +++ b/camel/providers/imap/camel-imap-folder.c @@ -286,11 +286,9 @@ imap_refresh_info (CamelFolder *folder, CamelException *ex) } } - /* Theoretically, the UIDs could get arbitrarily reordered, - * but that won't normally happen. We assume that if we find a - * UID in the summary that doesn't correspond to the UID in - * the folder, that it means the message was deleted on the - * server, so we remove it from the summary. + /* If we find a UID in the summary that doesn't correspond to + * the UID in the folder, that it means the message was + * deleted on the server, so we remove it from the summary. */ summary_len = camel_folder_summary_count (imap_folder->summary); for (i = 0; i < summary_len && i < imap_folder->exists; i++) { @@ -314,13 +312,20 @@ imap_refresh_info (CamelFolder *folder, CamelException *ex) g_free (new[i].uid); } + /* Remove any leftover cached summary messages. */ + while (summary_len > i + 1) { + camel_folder_summary_remove_index (imap_folder->summary, + --summary_len); + } + + /* Add any new folder messages. */ if (i < imap_folder->exists) { /* Fetch full summary for the remaining messages. */ imap_update_summary (folder, i + 1, imap_folder->exists, ex); - } - for (; i < imap_folder->exists; i++) - g_free (new[i].uid); + while (i < imap_folder->exists) + g_free (new[i++].uid); + } g_free (new); } diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 6ad48107b1..ae4c13c150 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -448,7 +448,7 @@ get_folder (CamelStore *store, const char *folder_name, gboolean create, CamelEx summary_file = g_strdup_printf ("%s/%s/#summary", imap_store->storage_path, - folder_path); + folder_name); p = strrchr (summary_file, '/'); *p = '\0'; if (e_mkdir_hier (summary_file, S_IRWXU) == 0) { |