mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
lib: Use talloc to simplify cleanup in notmuch_database_open
Previously, we manually "free"d various pointers in notmuch_database_open. Use a local talloc context instead to simplify cleanup and eliminate various NULL pointer initializations and conditionals.
This commit is contained in:
parent
6c0adab23e
commit
c32116d048
1 changed files with 5 additions and 9 deletions
|
@ -582,15 +582,15 @@ notmuch_database_t *
|
|||
notmuch_database_open (const char *path,
|
||||
notmuch_database_mode_t mode)
|
||||
{
|
||||
void *local = talloc_new (NULL);
|
||||
notmuch_database_t *notmuch = NULL;
|
||||
char *notmuch_path = NULL, *xapian_path = NULL;
|
||||
char *notmuch_path, *xapian_path;
|
||||
struct stat st;
|
||||
int err;
|
||||
unsigned int i, version;
|
||||
static int initialized = 0;
|
||||
|
||||
if (asprintf (¬much_path, "%s/%s", path, ".notmuch") == -1) {
|
||||
notmuch_path = NULL;
|
||||
if (! (notmuch_path = talloc_asprintf (local, "%s/%s", path, ".notmuch"))) {
|
||||
fprintf (stderr, "Out of memory\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
@ -602,8 +602,7 @@ notmuch_database_open (const char *path,
|
|||
goto DONE;
|
||||
}
|
||||
|
||||
if (asprintf (&xapian_path, "%s/%s", notmuch_path, "xapian") == -1) {
|
||||
xapian_path = NULL;
|
||||
if (! (xapian_path = talloc_asprintf (local, "%s/%s", notmuch_path, "xapian"))) {
|
||||
fprintf (stderr, "Out of memory\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
@ -708,10 +707,7 @@ notmuch_database_open (const char *path,
|
|||
}
|
||||
|
||||
DONE:
|
||||
if (notmuch_path)
|
||||
free (notmuch_path);
|
||||
if (xapian_path)
|
||||
free (xapian_path);
|
||||
talloc_free (local);
|
||||
|
||||
return notmuch;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue