diff --git a/contrib/mempattern.h b/contrib/mempattern.h index 0b9957b1dd35421c7a30efcdb4df123d868d4156..a0cd9a62d29bd3a30cedbe607e1ac14e0e031381 100644 --- a/contrib/mempattern.h +++ b/contrib/mempattern.h @@ -21,6 +21,7 @@ #pragma once #include <libknot/mm_ctx.h> +#include "contrib/ucw/mempool.h" #include "lib/defines.h" #include <assert.h> #include <stdint.h> @@ -55,6 +56,17 @@ void mm_ctx_mempool(knot_mm_t *mm, size_t chunk_size); /* API in addition to Knot's mempattern. */ +/*! \brief New memory pool context, allocated on itself. */ +KR_EXPORT knot_mm_t * mm_ctx_mempool2(size_t chunk_size); + +/*! \brief Delete a memory pool. OK to call on a non-pool. */ +static inline void mm_ctx_delete(knot_mm_t *mm) +{ + /* The mp_alloc comparison bears a risk of missing the private symbol from knot. */ + if (mm && mm->ctx && mm->alloc == (knot_mm_alloc_t)mp_alloc) + mp_delete(mm->ctx); +} + /*! \brief Readability: avoid const-casts in code. */ static inline void free_const(const void *what) { @@ -78,6 +90,3 @@ static inline void mm_ctx_init_aligned(knot_mm_t *mm, size_t alignment) } } -/*! \brief New memory pool context, allocated on itself. */ -KR_EXPORT knot_mm_t * mm_ctx_mempool2(size_t chunk_size); - diff --git a/tests/unit/meson.build b/tests/unit/meson.build index a133e618031d26232a356669f5f0248779de2bbd..b10789cc2a8448788e1a762fd787e5f4cdb5bfae 100644 --- a/tests/unit/meson.build +++ b/tests/unit/meson.build @@ -11,7 +11,7 @@ mock_cmodule_mod = shared_module( mock_cmodule_src, name_prefix: '', dependencies: libknot, - include_directories: include_directories('../../'), + include_directories: mod_inc_dir, ) # executables with tests