diff options
author | Enrico Loparco (eloparco) <eloparco@cisco.com> | 2021-04-03 00:03:57 +0200 |
---|---|---|
committer | Enrico Loparco (eloparco) <eloparco@cisco.com> | 2021-04-03 00:03:57 +0200 |
commit | 6ffbb5ed61733b8dbef39b1a9d437e899e9359d7 (patch) | |
tree | 3db1707fff8e11db5d2fb59c64cb4de92a57c721 /hicn-light/src/hicn/base/pool.c | |
parent | 2fa1eaf5aecbd862e9eba897d989d2fd7adba71e (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.c | 5 |
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); } |