X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=hash.c;h=e29017cda8a98e286dbcb3ab1c7e81537276328b;hb=6d98e0138f8ef5963d98448871b13e1cf2356c64;hp=47ec2d8b099446fee0d033c5fad9fc15a5803e28;hpb=e02c731dfbb288c736f2cd09a9b6df0507c59ddd;p=onak.git diff --git a/hash.c b/hash.c index 47ec2d8..e29017c 100644 --- a/hash.c +++ b/hash.c @@ -38,6 +38,41 @@ void inithash(void) 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; + struct ll *nextll = NULL; + + 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; + } + 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;