aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/base/pool.c
diff options
context:
space:
mode:
authorEnrico Loparco (eloparco) <eloparco@cisco.com>2021-03-30 18:08:34 +0200
committerEnrico Loparco (eloparco) <eloparco@cisco.com>2021-03-31 10:23:35 +0200
commit2fa1eaf5aecbd862e9eba897d989d2fd7adba71e (patch)
tree95237567664cdc8fc7cf8eb3fac9ad27eb11457c /hicn-light/src/hicn/base/pool.c
parentf309c4aab4475f5511d00bc236e1f78a457693ed (diff)
[HICN-558, HICN-556] Fix bugs in pool and bitmap
Fix element size in pool. Solve realloc problem in bitmap. Use the object size (not its pointer) when adding an object to the pool. Signed-off-by: Enrico Loparco (eloparco) <eloparco@cisco.com> Change-Id: Id338e403b09bb22f3a326d2cb28cf09300c0de33 Signed-off-by: Enrico Loparco (eloparco) <eloparco@cisco.com>
Diffstat (limited to 'hicn-light/src/hicn/base/pool.c')
-rw-r--r--hicn-light/src/hicn/base/pool.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/hicn-light/src/hicn/base/pool.c b/hicn-light/src/hicn/base/pool.c
index cb650b9e5..a7c50963d 100644
--- a/hicn-light/src/hicn/base/pool.c
+++ b/hicn-light/src/hicn/base/pool.c
@@ -116,7 +116,7 @@ _pool_resize(void ** pool_ptr, size_t elt_size)
vector_len(ph->free_indices) = old_size;
/* We also need to update the bitmap */
- bitmap_ensure_pos(ph->free_bitmap, new_size - 1);
+ bitmap_ensure_pos(&(ph->free_bitmap), new_size - 1);
bitmap_set_range(ph->free_bitmap, old_size, new_size - 1);
/* Reassign pool pointer */
@@ -143,8 +143,8 @@ _pool_get(void ** pool_ptr, void ** elt, size_t elt_size)
off_t free_id = ph->free_indices[l - 1];
vector_len(ph->free_indices)--;
bitmap_unset(ph->free_bitmap, free_id);
- *elt = *pool_ptr + free_id;
- memset(*elt, 0, sizeof(elt));
+ *elt = *pool_ptr + free_id * elt_size;
+ memset(*elt, 0, elt_size);
return free_id;
}