[dovecot-cvs] dovecot/src/lib-index mail-index.c, 1.118, 1.119 mail-transaction-log.c, 1.16, 1.17

cras at procontrol.fi cras at procontrol.fi
Mon May 3 17:37:51 EEST 2004


Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv16148/lib-index

Modified Files:
	mail-index.c mail-transaction-log.c 
Log Message:
memory leak fixes



Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -d -r1.118 -r1.119
--- mail-index.c	3 May 2004 14:22:24 -0000	1.118
+++ mail-index.c	3 May 2004 14:37:49 -0000	1.119
@@ -30,6 +30,8 @@
 
 void mail_index_free(struct mail_index *index)
 {
+	mail_index_close(index);
+
 	i_free(index->error);
 	i_free(index->dir);
 	i_free(index->prefix);
@@ -564,6 +566,8 @@
 	if (index->opened)
 		return 0;
 
+	index->filepath = i_strconcat(index->dir, "/", index->prefix, NULL);
+
 	do {
 		index->shared_lock_count = 0;
 		index->excl_lock_count = 0;
@@ -580,8 +584,6 @@
 			(flags & MAIL_INDEX_OPEN_FLAG_FCNTL_LOCKS_DISABLE) != 0;
 		index->readonly = FALSE;
 
-		index->filepath = i_strconcat(index->dir, "/",
-					      index->prefix, NULL);
 		ret = mail_index_open_files(index, flags);
 		if (ret <= 0)
 			break;

Index: mail-transaction-log.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-log.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- mail-transaction-log.c	3 May 2004 13:58:35 -0000	1.16
+++ mail-transaction-log.c	3 May 2004 14:37:49 -0000	1.17
@@ -130,6 +130,9 @@
 {
 	mail_transaction_log_views_close(log);
 
+	log->head->refcount--;
+	mail_transaction_logs_clean(log);
+
 	log->index->log = NULL;
 	i_free(log);
 }
@@ -222,6 +225,17 @@
 static void
 mail_transaction_log_file_close(struct mail_transaction_log_file *file)
 {
+	if (file->buffer != NULL)
+		buffer_free(file->buffer);
+
+	if (file->mmap_base != NULL) {
+		if (munmap(file->mmap_base, file->mmap_size) < 0) {
+			mail_index_file_set_syscall_error(file->log->index,
+							  file->filepath,
+							  "munmap()");
+		}
+	}
+
 	if (close(file->fd) < 0) {
 		mail_index_file_set_syscall_error(file->log->index,
 						  file->filepath, "close()");



More information about the dovecot-cvs mailing list