dovecot-2.2: lib-index: Fixed error handling in mail_index_open()
dovecot at dovecot.org
dovecot at dovecot.org
Thu Jul 3 14:46:06 UTC 2014
details: http://hg.dovecot.org/dovecot-2.2/rev/092137bd092b
changeset: 17579:092137bd092b
user: Timo Sirainen <tss at iki.fi>
date: Thu Jul 03 17:40:37 2014 +0300
description:
lib-index: Fixed error handling in mail_index_open()
diffstat:
src/lib-index/mail-index.c | 24 +++++++++++++-----------
1 files changed, 13 insertions(+), 11 deletions(-)
diffs (63 lines):
diff -r 8944983786cc -r 092137bd092b src/lib-index/mail-index.c
--- a/src/lib-index/mail-index.c Thu Jul 03 17:29:58 2014 +0300
+++ b/src/lib-index/mail-index.c Thu Jul 03 17:40:37 2014 +0300
@@ -26,6 +26,8 @@
struct mail_index_module_register mail_index_module_register = { 0 };
+static void mail_index_close_nonopened(struct mail_index *index);
+
struct mail_index *mail_index_alloc(const char *dir, const char *prefix)
{
struct mail_index *index;
@@ -559,8 +561,6 @@
if (index->open_count > 0) {
if ((ret = mail_index_open_opened(index, flags)) <= 0) {
/* doesn't exist and create flag not used */
- index->open_count++;
- mail_index_close(index);
}
return ret;
}
@@ -591,8 +591,7 @@
of the index files */
if ((ret = mail_index_open_files(index, flags)) <= 0) {
/* doesn't exist and create flag not used */
- index->open_count++;
- mail_index_close(index);
+ mail_index_close_nonopened(index);
return ret;
}
index->open_count++;
@@ -628,14 +627,8 @@
index->lock_type = F_UNLCK;
}
-void mail_index_close(struct mail_index *index)
+static void mail_index_close_nonopened(struct mail_index *index)
{
- i_assert(index->open_count > 0);
-
- mail_index_alloc_cache_index_closing(index);
- if (--index->open_count > 0)
- return;
-
i_assert(!index->syncing);
i_assert(index->views == NULL);
@@ -652,6 +645,15 @@
index->indexid = 0;
}
+void mail_index_close(struct mail_index *index)
+{
+ i_assert(index->open_count > 0);
+
+ mail_index_alloc_cache_index_closing(index);
+ if (--index->open_count == 0)
+ mail_index_close_nonopened(index);
+}
+
int mail_index_unlink(struct mail_index *index)
{
const char *path;
More information about the dovecot-cvs
mailing list