Fix a few memory leaks when enumerating keys with GpgME.
[claws.git] / src / plugins / pgpcore / select-keys.c
index 69a7f8af94be0b794ba4cb51e009eb86daec95f0..47e4b66fd9b461f79d3a0f9e9f6e5f96829d4707 100644 (file)
@@ -167,7 +167,7 @@ static void
 destroy_key (gpointer data)
 {
     gpgme_key_t key = data;
-    gpgme_key_release (key);
+    gpgme_key_unref (key);
 }
 
 static void
@@ -320,6 +320,8 @@ fill_clist (struct select_keys_s *sk, const char *pattern, gpgme_protocol_t prot
                g_free(raw_mail);
        }
        num_results++;
+       if (last_key != NULL)
+               gpgme_key_unref(last_key);
        last_key = key;
        key = NULL;
         update_progress (sk, ++running, pattern);
@@ -344,7 +346,11 @@ fill_clist (struct select_keys_s *sk, const char *pattern, gpgme_protocol_t prot
            gpgme_release (ctx);
     }
     /*gtk_cmclist_thaw (select_keys.clist);*/
-    return (exact_match == TRUE && num_results == 1 ? last_key:NULL);
+    if (exact_match && num_results == 1)
+           return last_key;
+
+    gpgme_key_unref(last_key);
+    return NULL;
 }