lib/open: fix leaks calling _trial_open

_trial_open can't know if the PATH_ERROR return value will cause the
error message to be returned from the library, so it's up the caller
to clean up if not.
This commit is contained in:
David Bremner 2021-03-27 09:12:28 -03:00
parent 4e209ca99a
commit 4a8d67e357

View file

@ -280,6 +280,9 @@ _notmuch_choose_xapian_path (void *ctx, const char *database_path,
if (status != NOTMUCH_STATUS_PATH_ERROR) if (status != NOTMUCH_STATUS_PATH_ERROR)
goto DONE; goto DONE;
if (*message_ptr)
free (*message_ptr);
notmuch_path = talloc_asprintf (ctx, "%s/.notmuch", database_path); notmuch_path = talloc_asprintf (ctx, "%s/.notmuch", database_path);
status = _db_dir_exists (notmuch_path, message_ptr); status = _db_dir_exists (notmuch_path, message_ptr);
if (status) if (status)
@ -648,6 +651,9 @@ notmuch_database_create_with_config (const char *database_path,
goto DONE; goto DONE;
} }
if (message)
free (message);
status = _finish_open (notmuch, status = _finish_open (notmuch,
profile, profile,
NOTMUCH_DATABASE_MODE_READ_WRITE, NOTMUCH_DATABASE_MODE_READ_WRITE,