diff options
author | Not Zed <NotZed@Ximian.com> | 2004-03-19 13:44:26 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2004-03-19 13:44:26 +0800 |
commit | 067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6 (patch) | |
tree | a95377a2aff1d4b20404e8f466f7d56b364b4210 /camel/camel-disco-store.c | |
parent | 3907796ac1481040b67d84a7830054522111d56e (diff) | |
download | gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.tar gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.tar.gz gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.tar.bz2 gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.tar.lz gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.tar.xz gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.tar.zst gsoc2013-evolution-067979285b49a2cd3f0b878a3a6f8bf52fdbf2b6.zip |
ref the diary before replaying it. it could get unreffed during replay if
2004-03-19 Not Zed <NotZed@Ximian.com>
* camel-disco-store.c (disco_connect): ref the diary before
replaying it. it could get unreffed during replay if there's an
error and we disconnect.
* camel-store.c (camel_store_get_folder): no longer use
folder_lock, we already have adequate serialisation code here or
below here. I hope.
(camel_store_get_folder_info): same here.
svn path=/trunk/; revision=25126
Diffstat (limited to 'camel/camel-disco-store.c')
-rw-r--r-- | camel/camel-disco-store.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/camel/camel-disco-store.c b/camel/camel-disco-store.c index 02ac74cd3f..f674eb797c 100644 --- a/camel/camel-disco-store.c +++ b/camel/camel-disco-store.c @@ -140,6 +140,7 @@ disco_connect (CamelService *service, CamelException *ex) { CamelDiscoStore *store = CAMEL_DISCO_STORE (service); CamelDiscoStoreStatus status; + struct _CamelDiscoDiary *diary; status = camel_disco_store_status (store); if (status != CAMEL_DISCO_STORE_OFFLINE) { @@ -160,9 +161,13 @@ disco_connect (CamelService *service, CamelException *ex) if (camel_disco_diary_empty (store->diary)) return TRUE; - /* Need to resync */ + /* Need to resync. Note we do the ref thing since during the replay + disconnect could be called, which will remove store->diary and unref it */ store->status = CAMEL_DISCO_STORE_RESYNCING; - camel_disco_diary_replay (store->diary, ex); + diary = store->diary; + camel_object_ref(diary); + camel_disco_diary_replay(diary, ex); + camel_object_unref(diary); store->status = CAMEL_DISCO_STORE_ONLINE; if (camel_exception_is_set (ex)) return FALSE; |