diff options
Diffstat (limited to 'src/lib/netlist/plib/palloc.h')
-rw-r--r-- | src/lib/netlist/plib/palloc.h | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/lib/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h index 0a79302787d..50aa880320e 100644 --- a/src/lib/netlist/plib/palloc.h +++ b/src/lib/netlist/plib/palloc.h @@ -63,7 +63,7 @@ namespace plib { { // call destructor p->~T(); - getref(m_a).deallocate(p); + getref(m_a).deallocate(p, sizeof(T)); } //private: arena_storage_type m_a; @@ -228,8 +228,7 @@ namespace plib { void deallocate(T* p, std::size_t n) noexcept { - unused_var(n); - m_a.deallocate(p); + m_a.deallocate(p, n); } template <class AR1, class T1, std::size_t A1, class AR2, class T2, std::size_t A2> @@ -263,7 +262,9 @@ namespace plib { struct aligned_arena { static constexpr const bool is_stateless = true; - template <class T, std::size_t ALIGN = alignof(T)> + using size_type = std::size_t; + + template <class T, size_type ALIGN = alignof(T)> using allocator_type = arena_allocator<aligned_arena, T, ALIGN>; template <typename T> @@ -298,8 +299,9 @@ namespace plib { #endif } - static inline void deallocate( void *ptr ) noexcept + static inline void deallocate( void *ptr, size_t size ) noexcept { + unused_var(size); #if (PUSE_ALIGNED_ALLOCATION) // NOLINTNEXTLINE(cppcoreguidelines-no-malloc) free(ptr); @@ -319,7 +321,7 @@ namespace plib { } catch (...) { - deallocate(mem); + deallocate(mem, sizeof(T)); throw; } } @@ -335,7 +337,7 @@ namespace plib { } catch (...) { - deallocate(mem); + deallocate(mem, sizeof(T)); throw; } } @@ -387,7 +389,7 @@ namespace plib { inline void pdelete(T *ptr) noexcept { ptr->~T(); - aligned_arena::deallocate(ptr); + aligned_arena::deallocate(ptr, sizeof(T)); } |