diff options
author | Austin Clements <amdragon@MIT.EDU> | 2012-01-29 00:50:10 -0500 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2012-02-03 21:15:45 -0400 |
commit | c32116d04807eec475d7e19bb6723c35bc399059 (patch) | |
tree | ebec688ac72e37141f917bac70df5515d78ba021 /lib/database.cc | |
parent | 6c0adab23eadb81bb1254f4b82175902df11bb3f (diff) |
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.
Diffstat (limited to 'lib/database.cc')
-rw-r--r-- | lib/database.cc | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/database.cc b/lib/database.cc index 94022d7c..c928d02b 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -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; } |