diff --git a/hashtable.c b/hashtable.c index 24ce993..c651fdb 100644 --- a/hashtable.c +++ b/hashtable.c @@ -12,7 +12,7 @@ struct entry { const char *key; - void *value; + void *value; struct entry *next; }; @@ -99,7 +99,7 @@ void *hashtable_set(hashtable h, const char *key, void *value) } // found replace the value void *old_value = item.found->value; - item.found-> value = value; + item.found->value = value; return old_value; } @@ -120,36 +120,37 @@ void *hashtable_remove(hashtable h, const char *key) return NULL; } // found, so detete it - if (item.prev != NULL) { - item.prev->next = item.found->next; - } else { - h->table[item.index] = item.found->next; - } - // free unused memory - void *value = item.found->value; // remember value - free((void*) item.found->key); // free key - free((void*) item.found); // free entry + if (item.prev != NULL) { + item.prev->next = item.found->next; + } else { + h->table[item.index] = item.found->next; + } + // free unused memory + void *value = item.found->value; // remember value + free((void*) item.found->key); // free key + free((void*) item.found); // free entry - return value; + return value; } void hashtable_destroy_bucket(hashtable h, int i) { struct entry *e = h->table[i]; while (e != NULL) { + struct entry *next = e->next; free((void*)e->key); - e = e->next; free(e); + e = next; } } void hashtable_destroy(hashtable h) { - if (h==NULL) return; + if (h == NULL) return; for (int i = 0; i < h->size; i++) { hashtable_destroy_bucket(h, i); } - free (h->table); + free(h->table); free(h); } @@ -158,7 +159,7 @@ ht_iterator hashtable_iter(hashtable h) ht_iterator iter = { .h = h, .index = -1, - .entry = NULL, + .entry = NULL, }; return iter; @@ -171,12 +172,15 @@ bool ht_iter_next(ht_iterator *iter) } hashtable h = iter->h; - while(true) { + while (true) { if (iter->index >= h->size) { return false; } if (iter->entry == NULL) { iter->index++; + if (iter->index >= h->size) { + return false; + } iter->entry = h->table[iter->index]; } else { iter->entry = iter->entry->next;