lib/load_config: deallocate / NULL database on fatal error

This fixes a potential memory leak, and makes the behaviour of
notmuch_database_load_config (somewhat) consistent with
n_d_{open,create} with config.
This commit is contained in:
David Bremner 2021-10-23 10:22:38 -03:00
parent 8f0b84789d
commit fe51c275fc
2 changed files with 7 additions and 1 deletions

View file

@ -871,6 +871,13 @@ notmuch_database_load_config (const char *database_path,
if (status_string) if (status_string)
*status_string = message; *status_string = message;
if (status &&
status != NOTMUCH_STATUS_NO_DATABASE
&& status != NOTMUCH_STATUS_NO_CONFIG) {
notmuch_database_destroy (notmuch);
notmuch = NULL;
}
if (database) if (database)
*database = notmuch; *database = notmuch;

View file

@ -942,7 +942,6 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "load_config: database set to NULL on fatal error" test_begin_subtest "load_config: database set to NULL on fatal error"
test_subtest_known_broken
cat c_head3 - c_tail3 <<'EOF' | test_C cat c_head3 - c_tail3 <<'EOF' | test_C
notmuch_status_t st = notmuch_database_load_config("relative", NULL, NULL, &db, NULL); notmuch_status_t st = notmuch_database_load_config("relative", NULL, NULL, &db, NULL);
EOF EOF