]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Memory leak fixes.
authorTimo Sirainen <tss@iki.fi>
Fri, 27 Jun 2008 05:10:54 +0000 (08:10 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 27 Jun 2008 05:10:54 +0000 (08:10 +0300)
--HG--
branch : HEAD

src/imap/cmd-fetch.c
src/imap/imap-fetch.c
src/lib-index/mail-index-modseq.c
src/lib-storage/index/index-sort-string.c
src/lib-storage/index/index-sort.c

index cddbe74df4e0678cd7b196176ddb85ec98c12b15..fbbb74fa6b8bc4c8f2755c4222cb907cd2442a89 100644 (file)
@@ -201,8 +201,10 @@ bool cmd_fetch(struct client_command_context *cmd)
                return ret < 0;
 
        ctx = imap_fetch_init(cmd, client->mailbox);
-       if (ctx == NULL)
+       if (ctx == NULL) {
+               mail_search_args_unref(&search_args);
                return TRUE;
+       }
        ctx->search_args = search_args;
 
        if (!fetch_parse_args(ctx, &args[1]) ||
index 8b25662c917642ee964e6771f05407fc7307b49e..185ef5705e67f24fef44c7cdbd333ebce27ff5c0 100644 (file)
@@ -562,6 +562,7 @@ int imap_fetch_deinit(struct imap_fetch_context *ctx)
        if (ctx->mail != NULL)
                mail_free(&ctx->mail);
 
+       mail_search_args_unref(&ctx->search_args);
        if (ctx->search_ctx != NULL) {
                if (mailbox_search_deinit(&ctx->search_ctx) < 0)
                        ctx->failed = TRUE;
index ed74d84df5b237d5d9cb05208dca1887a1a52907..d91f5438d083647035938207066ff61f507bc756 100644 (file)
@@ -608,8 +608,8 @@ void mail_index_map_modseq_free(struct mail_index_map_modseq *mmap)
 
        metadata = array_get_modifiable(&mmap->metadata_modseqs, &count);
        for (i = 0; i < count; i++) {
-               if (array_is_created(&metadata->modseqs))
-                       array_free(&metadata->modseqs);
+               if (array_is_created(&metadata[i].modseqs))
+                       array_free(&metadata[i].modseqs);
        }
        array_free(&mmap->metadata_modseqs);
        i_free(mmap);
index 0a00c5b3811920cfa0956d05d7b0af8fdd56d8be..9ed522475acfd19a5db7a448bd4c0a3670cc361d 100644 (file)
@@ -753,7 +753,10 @@ void index_sort_list_finish_string(struct mail_search_sort_program *program)
                qsort(nodes, count, sizeof(struct mail_sort_node),
                      sort_node_cmp);
 
-               i_array_init(&program->seqs, count);
+               if (!array_is_created(&program->seqs))
+                       i_array_init(&program->seqs, count);
+               else
+                       array_clear(&program->seqs);
                for (i = 0; i < count; i++) {
                        seq = nodes[i].seq;
                        array_append(&program->seqs, &seq, 1);
@@ -818,4 +821,6 @@ void index_sort_list_finish_string(struct mail_search_sort_program *program)
        }
 
        array_free(&ctx->zero_nodes);
+       i_free(ctx);
+       program->context = NULL;
 }
index 58fdf051600975375b6493b79e9faa65bf23362a..8bfe55792027e844c21c021476fea3d3caab5013 100644 (file)
@@ -235,6 +235,9 @@ void index_sort_program_deinit(struct mail_search_sort_program **_program)
        struct mail_search_sort_program *program = *_program;
 
        *_program = NULL;
+
+       if (program->context != NULL)
+               index_sort_list_finish(program);
        mail_free(&program->temp_mail);
        array_free(&program->seqs);
        i_free(program);