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? */