aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorGravatar Justus Winter <4winter@informatik.uni-hamburg.de>2012-02-19 00:56:57 +0100
committerGravatar David Bremner <bremner@debian.org>2012-02-20 23:03:25 -0400
commite2e95caa51f8c1ea57b4fc7d3926fda1fb1aed10 (patch)
tree95b301d0ad3ffabcec6a7bf56bb70ca190c4be9a /lib
parent0b2ff308ece7e45a32a9e5a98d400b268278071a (diff)
Prevent segmentation fault in notmuch_database_close
Previously opening a notmuch database in read write mode that has been locked resulted in the notmuch_database_open function executing notmuch_database_close as a cleanup function. notmuch_database_close failed to check whether the xapian database has in fact been created. Add a check whether the xapian database object has actually been created before trying to call its flush method. Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Diffstat (limited to 'lib')
-rw-r--r--lib/database.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/database.cc b/lib/database.cc
index c928d02b..5efa85eb 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -716,7 +716,8 @@ void
notmuch_database_close (notmuch_database_t *notmuch)
{
try {
- if (notmuch->mode == NOTMUCH_DATABASE_MODE_READ_WRITE)
+ if (notmuch->xapian_db != NULL &&
+ notmuch->mode == NOTMUCH_DATABASE_MODE_READ_WRITE)
(static_cast <Xapian::WritableDatabase *> (notmuch->xapian_db))->flush ();
} catch (const Xapian::Error &error) {
if (! notmuch->exception_reported) {