dovecot-2.1: mailbox_list_index=yes iteration: Don't allocate re...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Mar 13 21:18:47 EET 2012
details: http://hg.dovecot.org/dovecot-2.1/rev/6cb102aa5d63
changeset: 14298:6cb102aa5d63
user: Timo Sirainen <tss at iki.fi>
date: Tue Mar 13 21:18:32 2012 +0200
description:
mailbox_list_index=yes iteration: Don't allocate returned mailbox names from data stack.
This breaks dsync.
diffstat:
src/lib-storage/list/mailbox-list-index-iter.c | 5 +++++
src/lib-storage/list/mailbox-list-index.h | 2 ++
2 files changed, 7 insertions(+), 0 deletions(-)
diffs (47 lines):
diff -r a3b162331cd1 -r 6cb102aa5d63 src/lib-storage/list/mailbox-list-index-iter.c
--- a/src/lib-storage/list/mailbox-list-index-iter.c Tue Mar 13 17:01:56 2012 +0200
+++ b/src/lib-storage/list/mailbox-list-index-iter.c Tue Mar 13 21:18:32 2012 +0200
@@ -25,6 +25,7 @@
ctx->ctx.glob = imap_match_init_multiple(pool, patterns, TRUE, ns_sep);
array_create(&ctx->ctx.module_contexts, pool, sizeof(void *), 5);
ctx->sep = ns_sep;
+ ctx->info_pool = pool_alloconly_create("mailbox list index iter info", 128);
if (mailbox_list_index_refresh(ctx->ctx.list) < 0) {
/* no indexing */
@@ -46,12 +47,15 @@
struct mailbox_list_index_node *node = ctx->next_node;
struct mailbox *box;
+ p_clear(ctx->info_pool);
+
str_truncate(ctx->path, ctx->parent_len);
if (str_len(ctx->path) > 0)
str_append_c(ctx->path, ctx->sep);
str_append(ctx->path, node->name);
ctx->info.name = mailbox_list_get_vname(ctx->ctx.list, str_c(ctx->path));
+ ctx->info.name = p_strdup(ctx->info_pool, ctx->info.name);
ctx->info.flags = 0;
if ((node->flags & MAILBOX_LIST_INDEX_FLAG_NONEXISTENT) != 0)
ctx->info.flags |= MAILBOX_NONEXISTENT;
@@ -166,6 +170,7 @@
ilist->iter_refcount--;
}
+ pool_unref(&ctx->info_pool);
pool_unref(&_ctx->pool);
return ret;
}
diff -r a3b162331cd1 -r 6cb102aa5d63 src/lib-storage/list/mailbox-list-index.h
--- a/src/lib-storage/list/mailbox-list-index.h Tue Mar 13 17:01:56 2012 +0200
+++ b/src/lib-storage/list/mailbox-list-index.h Tue Mar 13 21:18:32 2012 +0200
@@ -109,6 +109,8 @@
struct mailbox_list_iterate_context *backend_ctx;
struct mailbox_info info;
+ pool_t info_pool;
+
unsigned int parent_len;
string_t *path;
struct mailbox_list_index_node *next_node;
More information about the dovecot-cvs
mailing list