From 39319663e823bd6e7dc051e8fac2f7e88f4ae6fb Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 4 May 2001 15:26:13 +0000 Subject: Fix up refcounting on current_folder. * providers/imap/camel-imap-store.c (get_folder_online): Fix up refcounting on current_folder. * camel-disco-folder.c, camel-disco-store.h: Remove CamelDiscoDiary refs that weren't supposed to escape yet. svn path=/trunk/; revision=9667 --- camel/providers/imap/camel-imap-store.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'camel/providers/imap') diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index 0a5c4425ac..74f420fe41 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -803,7 +803,10 @@ get_folder_online (CamelStore *store, const char *folder_name, /* Lock around the whole lot to check/create atomically */ CAMEL_IMAP_STORE_LOCK (imap_store, command_lock); - imap_store->current_folder = NULL; + if (imap_store->current_folder) { + camel_object_unref (CAMEL_OBJECT (imap_store->current_folder)); + imap_store->current_folder = NULL; + } response = camel_imap_command (imap_store, NULL, NULL, "SELECT %S", folder_name); if (!response) { @@ -833,7 +836,8 @@ get_folder_online (CamelStore *store, const char *folder_name, if (camel_exception_is_set (ex)) { camel_object_unref (CAMEL_OBJECT (new_folder)); new_folder = imap_store->current_folder = NULL; - } + } else + camel_object_ref (CAMEL_OBJECT (imap_store->current_folder)); } camel_imap_response_free_without_processing (imap_store, response); -- cgit