chiark / gitweb /
journal: use sd_journal_close on error in sd_journal_new
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Mar 2013 01:52:57 +0000 (21:52 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 18 Mar 2013 22:53:59 +0000 (18:53 -0400)
src/journal/sd-journal.c

index fa04bfd..2c5ee3f 100644 (file)
@@ -1568,37 +1568,21 @@ static sd_journal *journal_new(int flags, const char *path) {
 
         if (path) {
                 j->path = strdup(path);
-                if (!j->path) {
-                        free(j);
-                        return NULL;
-                }
+                if (!j->path)
+                        goto fail;
         }
 
         j->files = hashmap_new(string_hash_func, string_compare_func);
-        if (!j->files) {
-                free(j->path);
-                free(j);
-                return NULL;
-        }
-
         j->directories_by_path = hashmap_new(string_hash_func, string_compare_func);
-        if (!j->directories_by_path) {
-                hashmap_free(j->files);
-                free(j->path);
-                free(j);
-                return NULL;
-        }
-
         j->mmap = mmap_cache_new();
-        if (!j->mmap) {
-                hashmap_free(j->files);
-                hashmap_free(j->directories_by_path);
-                free(j->path);
-                free(j);
-                return NULL;
-        }
+        if (!j->files || !j->directories_by_path || !j->mmap)
+                goto fail;
 
         return j;
+
+fail:
+        sd_journal_close(j);
+        return NULL;
 }
 
 _public_ int sd_journal_open(sd_journal **ret, int flags) {