dovecot-2.0: listescape: Crashfix for some configurations.

dovecot at dovecot.org dovecot at dovecot.org
Mon Aug 9 19:39:25 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/ed61aee681b8
changeset: 11967:ed61aee681b8
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Aug 09 17:39:04 2010 +0100
description:
listescape: Crashfix for some configurations.

diffstat:

 src/plugins/listescape/listescape-plugin.c |  22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diffs (85 lines):

diff -r 3f5c53f84d0a -r ed61aee681b8 src/plugins/listescape/listescape-plugin.c
--- 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);
 }
 


More information about the dovecot-cvs mailing list