aboutsummaryrefslogtreecommitdiff
path: root/src/std/hash_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/std/hash_map.c')
-rw-r--r--src/std/hash_map.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/std/hash_map.c b/src/std/hash_map.c
index 402c56d..61030da 100644
--- a/src/std/hash_map.c
+++ b/src/std/hash_map.c
@@ -116,7 +116,7 @@ static void hash_map_reorder_nodes(HashMap *self, usize end_index) {
bucket_node = bucket_node_get_next(bucket_node);
bucket_node_set_next(moved_node, new_bucket->start);
new_bucket->start = moved_node;
- /* Mark bucket node to be removed bucket by dechaining */
+ /* Remove current from chain by chaining previous and next */
if(prev_bucket_node)
bucket_node_set_next(prev_bucket_node, bucket_node);
else
@@ -134,13 +134,13 @@ static void hash_map_reorder_nodes(HashMap *self, usize end_index) {
}
static CHECK_RESULT int hash_map_increase_buckets(HashMap *self) {
- usize prev_size;
+ usize prev_num_elements;
usize bytes_to_append;
- prev_size = buffer_get_size(&self->buckets, HashMapBucket);
- bytes_to_append = prev_size * 1.5;
+ prev_num_elements = buffer_get_size(&self->buckets, HashMapBucket);
+ bytes_to_append = (usize)(prev_num_elements * 1.5) * sizeof(HashMapBucket);
return_if_error(buffer_append(&self->buckets, NULL, bytes_to_append));
- am_memset(((HashMapBucket*)self->buckets.data) + prev_size, 0, bytes_to_append);
- hash_map_reorder_nodes(self, prev_size);
+ am_memset(((HashMapBucket*)self->buckets.data) + prev_num_elements, 0, bytes_to_append);
+ hash_map_reorder_nodes(self, prev_num_elements);
return 0;
}