changeset 11967:ed61aee681b8

listescape: Crashfix for some configurations.
author Timo Sirainen <tss@iki.fi>
date Mon, 09 Aug 2010 17:39:04 +0100
parents 3f5c53f84d0a
children 351948b4dc6c
files src/plugins/listescape/listescape-plugin.c
diffstat 1 files changed, 12 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/listescape/listescape-plugin.c	Mon Aug 09 17:35:08 2010 +0100
+++ b/src/plugins/listescape/listescape-plugin.c	Mon Aug 09 17:39:04 2010 +0100
@@ -42,10 +42,9 @@
 				  &mailbox_list_module_register);
 
 static const char *
-list_escape(struct mail_namespace *ns, const char *str, bool vname)
+list_escape(struct listescape_mailbox_list *mlist,
+	    struct mail_namespace *ns, const char *str, bool vname)
 {
-	struct listescape_mailbox_list *mlist =
-		LIST_ESCAPE_LIST_CONTEXT(ns->list);
 	string_t *esc = t_str_new(64);
 	unsigned int i;
 
@@ -133,6 +132,7 @@
 		     const char *const *patterns,
 		     enum mailbox_list_iter_flags flags)
 {
+	struct listescape_mailbox_list *mlist = LIST_ESCAPE_LIST_CONTEXT(list);
 	struct mail_namespace *orig_ns;
 	const char **escaped_patterns;
 	unsigned int i;
@@ -148,7 +148,8 @@
 		} else {
 			orig_ns = list->ns;
 		}
-		escaped_patterns[i] = list_escape(orig_ns, patterns[i], TRUE);
+		escaped_patterns[i] = list_escape(mlist, orig_ns,
+						  patterns[i], TRUE);
 	}
 	return escaped_patterns;
 }
@@ -259,9 +260,10 @@
 			 const char *name, enum mailbox_flags flags)
 {
 	struct listescape_mail_storage *mstorage = LIST_ESCAPE_CONTEXT(storage);
+	struct listescape_mailbox_list *mlist = LIST_ESCAPE_LIST_CONTEXT(list);
 
 	if (list->hierarchy_sep != list->ns->sep)
-		name = list_escape(list->ns, name, FALSE);
+		name = list_escape(mlist, list->ns, name, FALSE);
 	return mstorage->module_ctx.super.
 		mailbox_alloc(storage, list, name, flags);
 }
@@ -275,9 +277,9 @@
 
 	ns = listescape_find_orig_ns(list->ns, name);
 	if (ns == list->ns || strncmp(ns->prefix, name, ns->prefix_len) != 0)
-		name = list_escape(ns, name, FALSE);
+		name = list_escape(mlist, ns, name, FALSE);
 	else {
-		esc_name = list_escape(ns, name + ns->prefix_len, FALSE);
+		esc_name = list_escape(mlist, ns, name + ns->prefix_len, FALSE);
 		name = t_strconcat(ns->prefix, esc_name, NULL);
 	}
 	return mlist->module_ctx.super.set_subscribed(list, name, set);
@@ -289,7 +291,7 @@
 {
 	struct listescape_mailbox_list *mlist = LIST_ESCAPE_LIST_CONTEXT(list);
 
-	name = list_escape(list->ns, name, FALSE);
+	name = list_escape(mlist, list->ns, name, FALSE);
 	return mlist->module_ctx.super.
 		get_mailbox_name_status(list, name, status);
 }
@@ -299,7 +301,7 @@
 {
 	struct listescape_mailbox_list *mlist = LIST_ESCAPE_LIST_CONTEXT(list);
 
-	name = list_escape(list->ns, name, FALSE);
+	name = list_escape(mlist, list->ns, name, FALSE);
 	return mlist->module_ctx.super.is_valid_existing_name(list, name);
 }
 
@@ -308,7 +310,7 @@
 {
 	struct listescape_mailbox_list *mlist = LIST_ESCAPE_LIST_CONTEXT(list);
 
-	name = list_escape(list->ns, name, FALSE);
+	name = list_escape(mlist, list->ns, name, FALSE);
 	return mlist->module_ctx.super.is_valid_create_name(list, name);
 }