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