[PATCH] Prevent segmentation fault in notmuch_database_close
Austin Clements
amdragon at MIT.EDU
Sat Feb 18 16:56:22 PST 2012
Quoth Justus Winter on Feb 19 at 12:56 am:
> 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 at informatik.uni-hamburg.de>
LGTM. Nice catch.
> ---
> lib/database.cc | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/lib/database.cc b/lib/database.cc
> index c928d02..5efa85e 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) {
More information about the notmuch
mailing list