]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - hash.c
cscvs to tla changeset 40
[onak.git] / hash.c
diff --git a/hash.c b/hash.c
index e29017cda8a98e286dbcb3ab1c7e81537276328b..e131d032b576281d1ad98e478b04185e57654cf2 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -13,6 +13,7 @@
 #include "keydb.h"
 #include "keyid.h"
 #include "ll.h"
 #include "keydb.h"
 #include "keyid.h"
 #include "ll.h"
+#include "mem.h"
 #include "stats.h"
 
 /**
 #include "stats.h"
 
 /**
@@ -48,20 +49,14 @@ void destroyhash(void)
 {
        int i;
        struct ll *curll = NULL;
 {
        int i;
        struct ll *curll = NULL;
-       struct ll *nextll = NULL;
 
        for (i = 0; i < HASHSIZE; i++) {
                curll = hashtable[i];
 
        for (i = 0; i < HASHSIZE; i++) {
                curll = hashtable[i];
-               while (curll != NULL) {
-                       nextll = curll->next;
-                       /*
-                        * TODO: The problem is the object has pointers that
-                        * need freed too.
-                        */
-                       free(curll->object);
-                       free(curll);
-                       curll = nextll;
-               }
+               /*
+                * TODO: The problem is the object has pointers that
+                * need freed too.
+                */
+               llfree(curll, free_statskey);
                hashtable[i] = NULL;
        }
        elements = 0;
                hashtable[i] = NULL;
        }
        elements = 0;
@@ -144,6 +139,10 @@ struct ll *hash_getkeysigs(uint64_t keyid)
 {
        struct stats_key *key = NULL;
 
 {
        struct stats_key *key = NULL;
 
+       if (keyid == 0)  {
+               return NULL;
+       }
+
        key = findinhash(keyid);
        if (key == NULL) {
                key = malloc(sizeof(*key));
        key = findinhash(keyid);
        if (key == NULL) {
                key = malloc(sizeof(*key));