diff options
author | Enrico Loparco (eloparco) <eloparco@cisco.com> | 2021-03-30 18:08:34 +0200 |
---|---|---|
committer | Enrico Loparco (eloparco) <eloparco@cisco.com> | 2021-03-31 10:23:35 +0200 |
commit | 2fa1eaf5aecbd862e9eba897d989d2fd7adba71e (patch) | |
tree | 95237567664cdc8fc7cf8eb3fac9ad27eb11457c /hicn-light/src/hicn/base/pool.c | |
parent | f309c4aab4475f5511d00bc236e1f78a457693ed (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.c | 6 |
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; } |