Blob Blame History Raw
diff -up evolution-data-server-3.8.5/camel/camel-imapx-store-summary.c.eds-1098036 evolution-data-server-3.8.5/camel/camel-imapx-store-summary.c
--- evolution-data-server-3.8.5/camel/camel-imapx-store-summary.c.eds-1098036	2013-07-23 13:57:54.000000000 +0200
+++ evolution-data-server-3.8.5/camel/camel-imapx-store-summary.c	2014-05-19 15:39:42.145061474 +0200
@@ -355,17 +355,26 @@ camel_imapx_store_summary_namespace_find
 {
 	gint len;
 	CamelIMAPXStoreNamespace *ns;
+	CamelIMAPXStoreNamespace *namespaces[] = 
+	{
+		s->namespaces->personal, 
+		s->namespaces->other, 
+		s->namespaces->shared,
+		NULL
+	};
+	gint ii = 0;
 
-	/* NB: this currently only compares against 1 namespace, in future compare against others */
-	/* CHEN TODO */
-	ns = s->namespaces->personal;
-	while (ns) {
+	for (ii = 0; ii < 3; ii++) {
+		ns = namespaces[ii];
+		if (!ns)
+			continue;
+
+		d ("find_path: comparing namespace '%s' to name '%s'\n", ns->path, path);
 		len = strlen (ns->path);
 		if (len == 0
 		    || (strncmp (ns->path, path, len) == 0
 			&& (path[len] == '/' || path[len] == 0)))
 			break;
-		ns = NULL;
 	}
 
 	/* have a default? */
@@ -378,11 +387,20 @@ camel_imapx_store_summary_namespace_find
 {
 	gint len = 0;
 	CamelIMAPXStoreNamespace *ns;
+	CamelIMAPXStoreNamespace *namespaces[] = 
+	{
+		s->namespaces->personal, 
+		s->namespaces->other, 
+		s->namespaces->shared,
+		NULL
+	};
+	gint ii = 0;
+
+	for (ii = 0; ii < 3; ii++) {
+		ns = namespaces[ii];
+		if (!ns)
+			continue;
 
-	/* NB: this currently only compares against 1 namespace, in future compare against others */
-	/* CHEN TODO */
-	ns = s->namespaces->personal;
-	while (ns) {
 		if (ns->full_name)
 			len = strlen (ns->full_name);
 		d ("find_full: comparing namespace '%s' to name '%s'\n", ns->full_name, full);
@@ -390,7 +408,6 @@ camel_imapx_store_summary_namespace_find
 		    || (strncmp (ns->full_name, full, len) == 0
 			&& (full[len] == ns->sep || full[len] == 0)))
 			break;
-		ns = NULL;
 	}
 
 	/* have a default? */