Submitting this bug report per bremner's request (thanks for the assist
today!)
The documentation for 'notmuch_database_open_with_config()' states:
> In case of any failure, this function returns an error status and
> sets *database to NULL.
However, it's possible to trigger a failure and leave *database in a
partially initialized state. Usage of this pointer causes a segfault in
libnotmuch.
Below is a small reproducer program that causes a no config file failure
and outputs if it has a non-NULL database pointer.
#include <notmuch.h>
#include <stdio.h>
int main() {
const char *db_path = "/home/aray/mail/";
notmuch_database_t *db = NULL;
notmuch_status_t st = notmuch_database_open_with_config(
db_path, NOTMUCH_DATABASE_MODE_READ_ONLY, NULL, NULL, &db, NULL);
if (st != NOTMUCH_STATUS_SUCCESS) {
printf("Received status: %s\n", notmuch_status_to_string(st));
if (db) {
printf("Received non-null DB pointer\n");
return -1;
}
}
return 0;
}
Please set 'db_path' to your notmuch database path and call the program
like such: NOTMUCH_CONFIG="./nonexistent" ./reprod
--
https://austinray.io
Open Source Maintainer, Software Engineer, Keyboard Enthusiast
GPG: 0127 ED83 B939 CCC9 8082 476E 1AA0 B115 C8AC 2C9E