dovecot: Changed *_deinit() APIs to take ** pointer and set it t...
dovecot at dovecot.org
dovecot at dovecot.org
Sun Sep 16 11:07:46 EEST 2007
details: http://hg.dovecot.org/dovecot/rev/7f733ba453bf
changeset: 6409:7f733ba453bf
user: Timo Sirainen <tss at iki.fi>
date: Sun Sep 16 11:07:42 2007 +0300
description:
Changed *_deinit() APIs to take ** pointer and set it to NULL.
diffstat:
7 files changed, 31 insertions(+), 24 deletions(-)
src/lib-storage/index/maildir/maildir-keywords.c | 15 +++++++++++----
src/lib-storage/index/maildir/maildir-keywords.h | 4 ++--
src/lib-storage/index/maildir/maildir-save.c | 4 +---
src/lib-storage/index/maildir/maildir-storage.c | 4 ++--
src/lib-storage/index/maildir/maildir-sync-index.c | 6 ++----
src/lib-storage/index/maildir/maildir-uidlist.c | 18 +++++++++++-------
src/lib-storage/index/maildir/maildir-uidlist.h | 4 ++--
diffs (165 lines):
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-keywords.c
--- a/src/lib-storage/index/maildir/maildir-keywords.c Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-keywords.c Sun Sep 16 11:07:42 2007 +0300
@@ -83,8 +83,11 @@ maildir_keywords_init_readonly(struct ma
return mk;
}
-void maildir_keywords_deinit(struct maildir_keywords *mk)
-{
+void maildir_keywords_deinit(struct maildir_keywords **_mk)
+{
+ struct maildir_keywords *mk = *_mk;
+
+ *_mk = NULL;
hash_destroy(mk->hash);
array_free(&mk->list);
pool_unref(mk->pool);
@@ -387,8 +390,12 @@ maildir_keywords_sync_init(struct maildi
return ctx;
}
-void maildir_keywords_sync_deinit(struct maildir_keywords_sync_ctx *ctx)
-{
+void maildir_keywords_sync_deinit(struct maildir_keywords_sync_ctx **_ctx)
+{
+ struct maildir_keywords_sync_ctx *ctx = *_ctx;
+
+ *_ctx = NULL;
+
t_push();
(void)maildir_keywords_commit(ctx->mk);
t_pop();
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-keywords.h
--- a/src/lib-storage/index/maildir/maildir-keywords.h Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-keywords.h Sun Sep 16 11:07:42 2007 +0300
@@ -7,7 +7,7 @@ struct maildir_keywords_sync_ctx;
struct maildir_keywords_sync_ctx;
struct maildir_keywords *maildir_keywords_init(struct maildir_mailbox *mbox);
-void maildir_keywords_deinit(struct maildir_keywords *mk);
+void maildir_keywords_deinit(struct maildir_keywords **mk);
/* Initialize a read-only maildir_keywords instance. Mailbox needs to contain
the dovecot-keywords file, but otherwise it doesn't have to be in maildir
@@ -18,7 +18,7 @@ struct maildir_keywords_sync_ctx *
struct maildir_keywords_sync_ctx *
maildir_keywords_sync_init(struct maildir_keywords *mk,
struct mail_index *index);
-void maildir_keywords_sync_deinit(struct maildir_keywords_sync_ctx *ctx);
+void maildir_keywords_sync_deinit(struct maildir_keywords_sync_ctx **ctx);
/* Returns keyword index. */
unsigned int maildir_keywords_char_idx(struct maildir_keywords_sync_ctx *ctx,
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-save.c
--- a/src/lib-storage/index/maildir/maildir-save.c Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-save.c Sun Sep 16 11:07:42 2007 +0300
@@ -689,9 +689,7 @@ int maildir_transaction_save_commit_pre(
Dovecot instances haven't yet seen the files. */
maildir_transaction_unlink_copied_files(ctx, mf);
- maildir_keywords_sync_deinit(ctx->keywords_sync_ctx);
- ctx->keywords_sync_ctx = NULL;
-
+ maildir_keywords_sync_deinit(&ctx->keywords_sync_ctx);
/* returning failure finishes the save_context */
maildir_transaction_save_rollback(ctx);
}
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-storage.c
--- a/src/lib-storage/index/maildir/maildir-storage.c Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.c Sun Sep 16 11:07:42 2007 +0300
@@ -853,8 +853,8 @@ static int maildir_storage_mailbox_close
}
if (mbox->keywords != NULL)
- maildir_keywords_deinit(mbox->keywords);
- maildir_uidlist_deinit(mbox->uidlist);
+ maildir_keywords_deinit(&mbox->keywords);
+ maildir_uidlist_deinit(&mbox->uidlist);
return index_storage_mailbox_close(box);
}
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-sync-index.c
--- a/src/lib-storage/index/maildir/maildir-sync-index.c Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-sync-index.c Sun Sep 16 11:07:42 2007 +0300
@@ -211,9 +211,7 @@ int maildir_sync_index_finish(struct mai
mbox->syncing_commit = FALSE;
}
- maildir_keywords_sync_deinit(ctx->keywords_sync_ctx);
- ctx->keywords_sync_ctx = NULL;
-
+ maildir_keywords_sync_deinit(&ctx->keywords_sync_ctx);
index_sync_changes_deinit(&ctx->sync_changes);
i_free(ctx);
return ret;
@@ -423,7 +421,7 @@ int maildir_sync_index(struct maildir_in
mail_index_keywords_free(&kw);
}
}
- maildir_uidlist_iter_deinit(iter);
+ maildir_uidlist_iter_deinit(&iter);
mbox->syncing_commit = FALSE;
if (ctx->uidlist_sync_ctx != NULL) {
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-uidlist.c
--- a/src/lib-storage/index/maildir/maildir-uidlist.c Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c Sun Sep 16 11:07:42 2007 +0300
@@ -230,10 +230,13 @@ static void maildir_uidlist_close(struct
uidlist->last_read_offset = 0;
}
-void maildir_uidlist_deinit(struct maildir_uidlist *uidlist)
-{
+void maildir_uidlist_deinit(struct maildir_uidlist **_uidlist)
+{
+ struct maildir_uidlist *uidlist = *_uidlist;
+
i_assert(!UIDLIST_IS_LOCKED(uidlist));
+ *_uidlist = NULL;
maildir_uidlist_close(uidlist);
hash_destroy(uidlist->files);
@@ -841,7 +844,7 @@ static int maildir_uidlist_write_fd(stru
str_printfa(str, " :%s\n", rec->filename);
o_stream_send(output, str_data(str), str_len(str));
}
- maildir_uidlist_iter_deinit(iter);
+ maildir_uidlist_iter_deinit(&iter);
o_stream_flush(output);
ret = output->stream_errno == 0 ? 0 : -1;
@@ -1383,7 +1386,8 @@ bool maildir_uidlist_iter_next(struct ma
return TRUE;
}
-void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx *ctx)
-{
- i_free(ctx);
-}
+void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx **_ctx)
+{
+ i_free(*_ctx);
+ *_ctx = NULL;
+}
diff -r 17ec931b51d7 -r 7f733ba453bf src/lib-storage/index/maildir/maildir-uidlist.h
--- a/src/lib-storage/index/maildir/maildir-uidlist.h Sun Sep 16 11:02:48 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-uidlist.h Sun Sep 16 11:07:42 2007 +0300
@@ -40,7 +40,7 @@ bool maildir_uidlist_is_locked(struct ma
bool maildir_uidlist_is_locked(struct maildir_uidlist *uidlist);
struct maildir_uidlist *maildir_uidlist_init(struct maildir_mailbox *mbox);
-void maildir_uidlist_deinit(struct maildir_uidlist *uidlist);
+void maildir_uidlist_deinit(struct maildir_uidlist **uidlist);
/* Returns -1 if error, 0 if file is broken or lost, 1 if ok. */
int maildir_uidlist_refresh(struct maildir_uidlist *uidlist);
@@ -104,6 +104,6 @@ bool maildir_uidlist_iter_next(struct ma
uint32_t *uid_r,
enum maildir_uidlist_rec_flag *flags_r,
const char **filename_r);
-void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx *ctx);
+void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx **ctx);
#endif
More information about the dovecot-cvs
mailing list