From b75d634339ad9bbb27be70e333fb2ee1fe34b7a7 Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 5 Jul 2023 00:36:39 -0300 Subject: [PATCH] hashtable: fix remove --- kernel-src/lib/hashtable.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel-src/lib/hashtable.c b/kernel-src/lib/hashtable.c index 40d0cb94..bce6f534 100644 --- a/kernel-src/lib/hashtable.c +++ b/kernel-src/lib/hashtable.c @@ -84,6 +84,7 @@ int hashtable_get(hashtable_t *table, void **value, void *key, size_t keysize) { int hashtable_remove(hashtable_t *table, void *key, size_t keysize) { uintmax_t hash = hashbuffer(key, keysize); + uintmax_t tableoffset = hash % table->capacity; hashentry_t *entry = getentry(table, key, keysize, hash); @@ -92,6 +93,8 @@ int hashtable_remove(hashtable_t *table, void *key, size_t keysize) { if (entry->prev) entry->prev->next = entry->next; + else + table->entries[tableoffset] = entry->next; if (entry->next) entry->next->prev = entry->prev;