Mercurial > dovecot > original-hg > dovecot-1.2
changeset 7245:dbb7f65e6307 HEAD
Memory leak fixes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 15 Feb 2008 13:25:47 +0200 |
parents | 673132f88be3 |
children | 599a9c679ee2 |
files | src/lib-mail/message-parser.c src/lib-storage/mail-storage.c src/lib-storage/mailbox-list-private.h src/lib-storage/mailbox-list.c |
diffstat | 4 files changed, 21 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ *_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;
--- 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 @@ void mail_storage_init(void) { + mailbox_lists_init(); i_array_init(&storages, 8); } @@ -42,6 +43,7 @@ { if (array_is_created(&storages)) array_free(&storages); + mailbox_lists_deinit(); } void mail_storage_class_register(struct mail_storage *storage_class)
--- 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 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,
--- 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 @@ 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 @@ 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; + unsigned int idx; - if (mailbox_list_driver_find(list->name, &idx)) { - i_fatal("mailbox_list_register(%s): duplicate driver", - list->name); - } + 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 @@ 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,