aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/base/pool.c
diff options
context:
space:
mode:
authorEnrico Loparco (eloparco) <eloparco@cisco.com>2021-04-03 00:03:57 +0200
committerEnrico Loparco (eloparco) <eloparco@cisco.com>2021-04-03 00:03:57 +0200
commit6ffbb5ed61733b8dbef39b1a9d437e899e9359d7 (patch)
tree3db1707fff8e11db5d2fb59c64cb4de92a57c721 /hicn-light/src/hicn/base/pool.c
parent2fa1eaf5aecbd862e9eba897d989d2fd7adba71e (diff)
[HICN-558] Fix bug in pool_put and add tests for several pool_get / pool_put
Signed-off-by: Enrico Loparco (eloparco) <eloparco@cisco.com> Change-Id: Ie0ee6d17ab87586143ecf07e648d22b3af72bbcd
Diffstat (limited to 'hicn-light/src/hicn/base/pool.c')
-rw-r--r--hicn-light/src/hicn/base/pool.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/hicn-light/src/hicn/base/pool.c b/hicn-light/src/hicn/base/pool.c
index a7c50963d..662c1233c 100644
--- a/hicn-light/src/hicn/base/pool.c
+++ b/hicn-light/src/hicn/base/pool.c
@@ -154,7 +154,8 @@ _pool_put(void ** pool_ptr, void ** elt, size_t elt_size)
pool_hdr_t * ph = pool_hdr(*pool_ptr);
uint64_t l = vector_len(ph->free_indices);
vector_ensure_pos(ph->free_indices, l);
- ph->free_indices[l] = *elt - *pool_ptr;
+ off_t freed_id = (*elt - *pool_ptr) / elt_size;
+ ph->free_indices[l] = freed_id;
vector_len(ph->free_indices)++;
- bitmap_set(ph->free_bitmap, l);
+ bitmap_set(ph->free_bitmap, freed_id);
}