changeset 6409:7f733ba453bf HEAD

Changed *_deinit() APIs to take ** pointer and set it to NULL.
author Timo Sirainen <tss@iki.fi>
date Sun, 16 Sep 2007 11:07:42 +0300
parents 17ec931b51d7
children e4eb71ae8e96
files src/lib-storage/index/maildir/maildir-keywords.c src/lib-storage/index/maildir/maildir-keywords.h src/lib-storage/index/maildir/maildir-save.c src/lib-storage/index/maildir/maildir-storage.c src/lib-storage/index/maildir/maildir-sync-index.c src/lib-storage/index/maildir/maildir-uidlist.c src/lib-storage/index/maildir/maildir-uidlist.h
diffstat 7 files changed, 26 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 	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 @@
 	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();
--- 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 *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 *
 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,
--- 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 @@
 		   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);
 	}
--- 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 @@
 	}
 
 	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);
 }
 
--- 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 @@
 		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 @@
 			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) {
--- 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 @@
 	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 @@
 		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 @@
 	return TRUE;
 }
 
-void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx *ctx)
+void maildir_uidlist_iter_deinit(struct maildir_uidlist_iter_ctx **_ctx)
 {
-	i_free(ctx);
+	i_free(*_ctx);
+	*_ctx = NULL;
 }
--- 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 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 @@
 			       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