# HG changeset patch # User Phil Carmody # Date 1410347338 -10800 # Node ID f0701f84ca010ce02dd2e486851c1c053020f790 # Parent c749a40eda0a7452e3e7cbbc62e195e4d6482f7d lib-index: test suite memory leak cleanup So that memory leak checkers can be active while running the test suites, ensure that the suite itself doesn't leak. Signed-off-by: Phil Carmody diff -r c749a40eda0a -r f0701f84ca01 src/lib-index/test-mail-index-transaction-finish.c --- a/src/lib-index/test-mail-index-transaction-finish.c Wed Sep 10 14:08:58 2014 +0300 +++ b/src/lib-index/test-mail-index-transaction-finish.c Wed Sep 10 14:08:58 2014 +0300 @@ -152,6 +152,7 @@ test_assert(conflicts[1].seq1 == 8 && conflicts[1].seq2 == 8); test_end(); + array_free(t->conflict_seqs); } static void test_mail_index_transaction_finish_modseq_updates(void) diff -r c749a40eda0a -r f0701f84ca01 src/lib-index/test-mail-index-transaction-update.c --- a/src/lib-index/test-mail-index-transaction-update.c Wed Sep 10 14:08:58 2014 +0300 +++ b/src/lib-index/test-mail-index-transaction-update.c Wed Sep 10 14:08:58 2014 +0300 @@ -70,6 +70,17 @@ t->first_new_seq = hdr.messages_count + 1; return t; } +static void mail_index_transaction_cleanup(struct mail_index_transaction *t) +{ + if (array_is_created(&t->appends)) + array_free(&t->appends); + if (array_is_created(&t->updates)) + array_free(&t->updates); + if (array_is_created(&t->modseq_updates)) + array_free(&t->modseq_updates); + if (array_is_created(&t->expunges)) + array_free(&t->expunges); +} static void test_mail_index_append(void) { @@ -103,6 +114,7 @@ test_assert(appends[1].uid == 124); test_assert(appends[1].flags == 0); test_end(); + mail_index_transaction_cleanup(t); /* test with some uids */ t = mail_index_transaction_new(); @@ -138,6 +150,8 @@ test_assert(appends[3].uid == 131); test_assert(appends[4].uid == 128); test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_flag_update_fastpath(void) @@ -178,6 +192,8 @@ test_assert(updates[1].remove_flags == 0); test_assert(!t->log_updates); test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_flag_update_simple_merges(void) @@ -221,6 +237,8 @@ test_assert(updates[0].uid1 == 4); test_assert(updates[0].uid2 == 12); test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_flag_update_complex_merges(void) @@ -279,6 +297,8 @@ test_assert(updates[6].remove_flags == 0); test_end(); + + mail_index_transaction_cleanup(t); } static void @@ -353,6 +373,8 @@ flags_array_check(t, flags, hdr.messages_count); } test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_cancel_flag_updates(void) @@ -385,6 +407,8 @@ test_assert(updates[1].uid1 == 7 && updates[1].uid2 == 7); test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_flag_update_appends(void) @@ -430,6 +454,8 @@ test_assert(updates[0].uid2 == 4); test_assert(updates[0].add_flags == MAIL_ANSWERED); test_end(); + + mail_index_transaction_cleanup(t); } static bool test_flag_update_pos(struct mail_index_transaction *t, @@ -475,6 +501,8 @@ test_assert(test_flag_update_pos(t, 11, 4)); test_assert(test_flag_update_pos(t, 12, 4)); test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_modseq_update(void) @@ -511,6 +539,8 @@ ups[3].modseq_high32 == 0 && ups[3].modseq_low32 == 2); test_end(); + + mail_index_transaction_cleanup(t); } static void test_mail_index_expunge(void) @@ -553,6 +583,8 @@ test_assert(memcmp(expunges[4].guid_128, empty_guid, sizeof(empty_guid)) == 0); test_end(); + + mail_index_transaction_cleanup(t); } int main(void) diff -r c749a40eda0a -r f0701f84ca01 src/lib-index/test-mail-transaction-log-append.c --- a/src/lib-index/test-mail-transaction-log-append.c Wed Sep 10 14:08:58 2014 +0300 +++ b/src/lib-index/test-mail-transaction-log-append.c Wed Sep 10 14:08:58 2014 +0300 @@ -157,6 +157,10 @@ file->fd = -1; test_end(); + buffer_free(&log->head->buffer); + i_free(log->head); + i_free(log->index); + i_free(log); unlink(tmp_path); } diff -r c749a40eda0a -r f0701f84ca01 src/lib-index/test-mail-transaction-log-view.c --- a/src/lib-index/test-mail-transaction-log-view.c Wed Sep 10 14:08:58 2014 +0300 +++ b/src/lib-index/test-mail-transaction-log-view.c Wed Sep 10 14:08:58 2014 +0300 @@ -71,8 +71,10 @@ /* files must be sorted by file_seq */ for (p = &log->files; *p != NULL; p = &(*p)->next) { - if ((*p)->hdr.file_seq > file->hdr.file_seq) + if ((*p)->hdr.file_seq > file->hdr.file_seq) { + file->next = *p; break; + } } *p = file; log->head = file; @@ -119,6 +121,7 @@ const struct mail_index_record *rec; struct mail_index_record append_rec; const void *data; + void *oldfile; uint32_t seq; uoff_t offset, last_log_size; bool reset; @@ -186,7 +189,10 @@ mail_transaction_log_view_clear(view, 2); test_assert(!view_is_file_refed(1) && view_is_file_refed(2) && view_is_file_refed(3)); + oldfile = log->files; + buffer_free(&log->files->buffer); log->files = log->files->next; + i_free(oldfile); test_assert(log->files->hdr.file_seq == 2); test_end(); @@ -205,6 +211,16 @@ test_assert(mail_transaction_log_view_set(view, 0, 0, (uint32_t)-1, (uoff_t)-1, &reset) == -1); view->log = log; test_end(); + + mail_transaction_log_view_close(&view); + i_free(log->index); + while (log->files != NULL) { + oldfile = log->files; + buffer_free(&log->files->buffer); + log->files = log->files->next; + i_free(oldfile); + } + i_free(log); } int main(void)