dovecot-1.1: Memory leak fixes
dovecot at dovecot.org
dovecot at dovecot.org
Fri Feb 15 13:25:34 EET 2008
details: http://hg.dovecot.org/dovecot-1.1/rev/dbb7f65e6307
changeset: 7245:dbb7f65e6307
user: Timo Sirainen <tss at iki.fi>
date: Fri Feb 15 13:25:47 2008 +0200
description:
Memory leak fixes
diffstat:
4 files changed, 22 insertions(+), 12 deletions(-)
src/lib-mail/message-parser.c | 2 ++
src/lib-storage/mail-storage.c | 2 ++
src/lib-storage/mailbox-list-private.h | 3 +++
src/lib-storage/mailbox-list.c | 27 +++++++++++++++------------
diffs (95 lines):
diff -r 673132f88be3 -r dbb7f65e6307 src/lib-mail/message-parser.c
--- a/src/lib-mail/message-parser.c Fri Feb 15 13:23:18 2008 +0200
+++ b/src/lib-mail/message-parser.c Fri Feb 15 13:25:47 2008 +0200
@@ -733,6 +733,8 @@ int message_parser_deinit(struct message
*_ctx = NULL;
*parts_r = ctx->parts;
+ if (ctx->hdr_parser_ctx != NULL)
+ message_parse_header_deinit(&ctx->hdr_parser_ctx);
i_stream_unref(&ctx->input);
pool_unref(&ctx->parser_pool);
return ret;
diff -r 673132f88be3 -r dbb7f65e6307 src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c Fri Feb 15 13:23:18 2008 +0200
+++ b/src/lib-storage/mail-storage.c Fri Feb 15 13:25:47 2008 +0200
@@ -35,6 +35,7 @@ static ARRAY_DEFINE(storages, struct mai
void mail_storage_init(void)
{
+ mailbox_lists_init();
i_array_init(&storages, 8);
}
@@ -42,6 +43,7 @@ void mail_storage_deinit(void)
{
if (array_is_created(&storages))
array_free(&storages);
+ mailbox_lists_deinit();
}
void mail_storage_class_register(struct mail_storage *storage_class)
diff -r 673132f88be3 -r dbb7f65e6307 src/lib-storage/mailbox-list-private.h
--- a/src/lib-storage/mailbox-list-private.h Fri Feb 15 13:23:18 2008 +0200
+++ b/src/lib-storage/mailbox-list-private.h Fri Feb 15 13:25:47 2008 +0200
@@ -96,6 +96,9 @@ extern struct mailbox_list_module_regist
extern void (*hook_mailbox_list_created)(struct mailbox_list *list);
+void mailbox_lists_init(void);
+void mailbox_lists_deinit(void);
+
int mailbox_list_settings_parse(const char *data,
struct mailbox_list_settings *set,
const char **layout, const char **alt_dir_r,
diff -r 673132f88be3 -r dbb7f65e6307 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c Fri Feb 15 13:23:18 2008 +0200
+++ b/src/lib-storage/mailbox-list.c Fri Feb 15 13:25:47 2008 +0200
@@ -33,6 +33,16 @@ void (*hook_mailbox_list_created)(struct
static ARRAY_DEFINE(mailbox_list_drivers, const struct mailbox_list *);
+void mailbox_lists_init(void)
+{
+ i_array_init(&mailbox_list_drivers, 4);
+}
+
+void mailbox_lists_deinit(void)
+{
+ array_free(&mailbox_list_drivers);
+}
+
static bool mailbox_list_driver_find(const char *name, unsigned int *idx_r)
{
const struct mailbox_list *const *drivers;
@@ -50,15 +60,11 @@ static bool mailbox_list_driver_find(con
void mailbox_list_register(const struct mailbox_list *list)
{
- if (!array_is_created(&mailbox_list_drivers))
- i_array_init(&mailbox_list_drivers, 4);
- else {
- unsigned int idx;
-
- if (mailbox_list_driver_find(list->name, &idx)) {
- i_fatal("mailbox_list_register(%s): duplicate driver",
- list->name);
- }
+ unsigned int idx;
+
+ if (mailbox_list_driver_find(list->name, &idx)) {
+ i_fatal("mailbox_list_register(%s): duplicate driver",
+ list->name);
}
array_append(&mailbox_list_drivers, &list, 1);
@@ -73,9 +79,6 @@ void mailbox_list_unregister(const struc
list->name);
}
array_delete(&mailbox_list_drivers, idx, 1);
-
- if (array_count(&mailbox_list_drivers) == 0)
- array_free(&mailbox_list_drivers);
}
int mailbox_list_alloc(const char *driver, struct mailbox_list **list_r,
More information about the dovecot-cvs
mailing list