]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - hash.c
cscvs to tla changeset 44
[onak.git] / hash.c
diff --git a/hash.c b/hash.c
index 82dfcc7c04a560a2a8508c4486efeebbae1c5d94..e131d032b576281d1ad98e478b04185e57654cf2 100644 (file)
--- a/hash.c
+++ b/hash.c
@@ -11,7 +11,9 @@
 
 #include "hash.h"
 #include "keydb.h"
 
 #include "hash.h"
 #include "keydb.h"
+#include "keyid.h"
 #include "ll.h"
 #include "ll.h"
+#include "mem.h"
 #include "stats.h"
 
 /**
 #include "stats.h"
 
 /**
@@ -37,6 +39,35 @@ void inithash(void)
        elements = 0;
 }
 
        elements = 0;
 }
 
+/**
+ *     destroyhash - Clean up the hash after use.
+ *
+ *     This function destroys the hash after use, freeing any memory that was
+ *     used during its lifetime.
+ */
+void destroyhash(void)
+{
+       int i;
+       struct ll *curll = NULL;
+
+       for (i = 0; i < HASHSIZE; i++) {
+               curll = hashtable[i];
+               /*
+                * TODO: The problem is the object has pointers that
+                * need freed too.
+                */
+               llfree(curll, free_statskey);
+               hashtable[i] = NULL;
+       }
+       elements = 0;
+}
+
+/**
+ *     addtohash - Adds a key to the hash.
+ *     @key: The key to add.
+ *
+ *     Takes a key and stores it in the hash.
+ */
 void addtohash(struct stats_key *key)
 {
        ++elements;
 void addtohash(struct stats_key *key)
 {
        ++elements;
@@ -108,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));