gpg: Explicitly close a combined Tofu DB.
authorWerner Koch <wk@gnupg.org>
Sat, 21 May 2016 10:49:12 +0000 (12:49 +0200)
committerWerner Koch <wk@gnupg.org>
Sat, 21 May 2016 10:51:18 +0000 (12:51 +0200)
* g10/tofu.c (tofu_closedbs): Close combined DB.

g10/tofu.c

index 314c76b..8c639db 100644 (file)
@@ -84,8 +84,8 @@ enum db_type
    theis case, NAME is either the normalized email address or the
    fingerprint.
 
-   To initialize this data structure, call opendbs().  When you are
-   done, clean it up using closedbs().  To get a handle to a database,
+   To initialize this data structure, call opendbs().  Cleanup is done
+   when the CTRL object is released.  To get a handle to a database,
    use the getdb() function.  This will either return an existing
    handle or open a new DB connection, as appropriate.  */
 struct db
@@ -1063,7 +1063,12 @@ tofu_closedbs (ctrl_t ctrl)
   if (!dbs)
     return;  /* Not initialized.  */
 
-  if (dbs->db)
+  if (dbs->db && dbs->db->type == DB_COMBINED)
+    {
+      log_assert (!dbs->db->next);
+      closedb (dbs->db);
+    }
+  else if (dbs->db)
     {
       struct db *old_head = db_cache;
       struct db *db;