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/ChangeLog | 8 ++++++++ camel/camel-disco-folder.c | 1 - camel/camel-disco-store.h | 1 - camel/providers/imap/camel-imap-store.c | 8 ++++++-- 4 files changed, 14 insertions(+), 4 deletions(-) (limited to 'camel') diff --git a/camel/ChangeLog b/camel/ChangeLog index ecad1c19d2..8a5974fee7 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,11 @@ +2001-05-04 Dan Winship + + * 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. + 2001-05-03 Dan Winship * camel-disco-store.c: new abstract class for disconnectable diff --git a/camel/camel-disco-folder.c b/camel/camel-disco-folder.c index bce6eaef06..91a12adece 100644 --- a/camel/camel-disco-folder.c +++ b/camel/camel-disco-folder.c @@ -26,7 +26,6 @@ #include #endif -#include "camel-disco-diary.h" #include "camel-disco-folder.h" #include "camel-disco-store.h" #include "camel-exception.h" diff --git a/camel/camel-disco-store.h b/camel/camel-disco-store.h index 3bba4e8a2b..abd2693f80 100644 --- a/camel/camel-disco-store.h +++ b/camel/camel-disco-store.h @@ -51,7 +51,6 @@ struct _CamelDiscoStore { CamelRemoteStore parent_object; CamelDiscoStoreStatus status; - CamelDiscoDiary *diary; }; 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 v1.2.3