Patch: avoid referencing old copy of imap store namespace



	Hi,

	This patch should avoid imap store reference to old namespaces already
destroyed. For example, after becoming online, we can happen to access
an old copy of namespace and then causing a crash.

Changelog entry:
* libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c:
  Small fix to avoid referencing an old copy of namespace in 
  get_folder_info_online.

-- 
José Dapena Paz <jdapena igalia com>
Igalia
diff --git a/ChangeLog b/ChangeLog
index 0f9d1a1..ec1c837 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-09  Jose Dapena Paz  <jdapena igalia com>
+
+	* libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c:
+	Small fix to avoid referencing an old copy of namespace in 
+	get_folder_info_online.
+
 2009-02-04  Sergio Villar Senin  <svillar igalia com>
 
 	* libtinymail-camel/tny-camel-store-account-priv.h:
diff --git a/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c b/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c
index f9fa800..f8f94b1 100644
--- a/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c
+++ b/libtinymail-camel/camel-lite/camel/providers/imap/camel-imap-store.c
@@ -4229,10 +4229,13 @@ get_folder_info_online (CamelStore *store, const char *top, guint32 flags, Camel
 			get_folders_sync_ns (imap_store, ns->personal, 
 				(gboolean) ns->other, 
 				(gboolean) ns->shared, ex);
-			delim = ns->personal->delim;
-			has_d = TRUE;
-			if (g_ascii_strncasecmp (ns->personal->prefix, "INBOX", 5) == 0) {
-				get_folders_sync (imap_store, "%", ex);
+			ns = imap_store->namespaces;
+			if (ns->personal) {
+				delim = ns->personal->delim;
+				has_d = TRUE;
+				if (g_ascii_strncasecmp (ns->personal->prefix, "INBOX", 5) == 0) {
+					get_folders_sync (imap_store, "%", ex);
+				}
 			}
 		}
 
@@ -4247,14 +4250,18 @@ get_folder_info_online (CamelStore *store, const char *top, guint32 flags, Camel
 		 * character. (recursively fetching alt.* of NNTP is not a 
 		 * very good idea nowadays...) */
 
-		if (ns->other)
+		if (ns->other) {
 			get_folders_sync_ns_only_lsub (imap_store, ns->other, ex);
+			ns = imap_store->namespaces;
+		}
 
 		if (camel_exception_is_set(ex))
 			goto fail;
 
-		if (ns->shared)
+		if (ns->shared) {
 			get_folders_sync_ns_only_lsub (imap_store, ns->shared, ex);
+			ns = imap_store->namespaces;
+		}
 
 		if (camel_exception_is_set(ex))
 			goto fail;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]