Mercurial > dovecot > core-2.2
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); }