diff --git a/src/database/open.c b/src/database/open.c
index dbe7428c014a4cc7da919070942df901a30bec62..9e06bc940daee6fb6a13f0142f02b2edefe5d02d 100644
--- a/src/database/open.c
+++ b/src/database/open.c
@@ -63,29 +63,22 @@ __inc(volatile sqlite3 *db, const char *name, bool check)
     if (!atexited) {
         atexited = 1;
         if (stack_new(&db_stack))
-            goto out_of_memory;
+            exit(EXIT_FAILURE);
     }
 
     struct named_db *item = malloc(sizeof(struct named_db));
     if (!item)
-        goto out_of_memory;
+        exit(EXIT_FAILURE);
     item->name = strdup(name);
     item->db   = db;
     if (stack_push(&db_stack, item))
-        goto out_of_memory;
+        exit(EXIT_FAILURE);
     return;
 error:
     LOG_ERROR_SCT("DB", "%s", "Database already in use");
     if (check)
         exit(EXIT_FAILURE);
-    else
-        return;
-out_of_memory:
-    LOG_ERROR_SCT("DB", "%s", "Out of memory");
-    if (check)
-        exit(EXIT_FAILURE);
-    else
-        return;
+    __dec(db, name);
 }
 
 int