aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-store.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-06-27 03:20:01 +0800
committerDan Winship <danw@src.gnome.org>2001-06-27 03:20:01 +0800
commit4fb01ff2ff50c15ddae5c676e616e77c98e09054 (patch)
tree51aeb0bc2887cdc19fdacca92eca75e17f664395 /camel/providers/imap/camel-imap-store.c
parent03d2f262c0d2094b8b4d7fdbeb45adbff0ade372 (diff)
downloadgsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.tar
gsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.tar.gz
gsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.tar.bz2
gsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.tar.lz
gsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.tar.xz
gsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.tar.zst
gsoc2013-evolution-4fb01ff2ff50c15ddae5c676e616e77c98e09054.zip
lock the cache around accesses
* providers/imap/camel-imap-folder.c (camel_imap_folder_selected, imap_append_offline, imap_append_online, camel_imap_folder_changed): lock the cache around accesses * providers/imap/camel-imap-store.c (get_folder_online): ref the newly-created folder (as current_folder) before calling camel_imap_folder_selected, in case that needs to do something that causes another folder to become current... svn path=/trunk/; revision=10509
Diffstat (limited to 'camel/providers/imap/camel-imap-store.c')
-rw-r--r--camel/providers/imap/camel-imap-store.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c
index eecc7b0e35..a86a3b51e7 100644
--- a/camel/providers/imap/camel-imap-store.c
+++ b/camel/providers/imap/camel-imap-store.c
@@ -872,12 +872,14 @@ get_folder_online (CamelStore *store, const char *folder_name,
g_free (folder_dir);
if (new_folder) {
imap_store->current_folder = new_folder;
+ camel_object_ref (CAMEL_OBJECT (new_folder));
camel_imap_folder_selected (new_folder, response, ex);
if (camel_exception_is_set (ex)) {
+ camel_object_unref (CAMEL_OBJECT (imap_store->current_folder));
+ imap_store->current_folder = NULL;
camel_object_unref (CAMEL_OBJECT (new_folder));
- new_folder = imap_store->current_folder = NULL;
- } else
- camel_object_ref (CAMEL_OBJECT (imap_store->current_folder));
+ new_folder = NULL;
+ }
}
camel_imap_response_free_without_processing (imap_store, response);