aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-05-04 23:26:13 +0800
committerDan Winship <danw@src.gnome.org>2001-05-04 23:26:13 +0800
commit39319663e823bd6e7dc051e8fac2f7e88f4ae6fb (patch)
treeba05d19fddc04f5b157c8649dee471b07b9d95df
parent76c3e060b79bb6fd90c8800086178b209b89c381 (diff)
downloadgsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.tar
gsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.tar.gz
gsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.tar.bz2
gsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.tar.lz
gsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.tar.xz
gsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.tar.zst
gsoc2013-evolution-39319663e823bd6e7dc051e8fac2f7e88f4ae6fb.zip
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
-rw-r--r--camel/ChangeLog8
-rw-r--r--camel/camel-disco-folder.c1
-rw-r--r--camel/camel-disco-store.h1
-rw-r--r--camel/providers/imap/camel-imap-store.c8
4 files changed, 14 insertions, 4 deletions
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 <danw@ximian.com>
+
+ * 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 <danw@ximian.com>
* 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 <config.h>
#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);