diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2012-02-19 00:56:57 +0100 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2012-02-20 23:03:25 -0400 |
commit | e2e95caa51f8c1ea57b4fc7d3926fda1fb1aed10 (patch) | |
tree | 95b301d0ad3ffabcec6a7bf56bb70ca190c4be9a /lib | |
parent | 0b2ff308ece7e45a32a9e5a98d400b268278071a (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.cc | 3 |
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) { |