diff --git a/src/util/SliceBuffer.hxx b/src/util/SliceBuffer.hxx index 55572c592..9b2afc98c 100644 --- a/src/util/SliceBuffer.hxx +++ b/src/util/SliceBuffer.hxx @@ -87,6 +87,13 @@ public: return n_allocated == buffer.size(); } + void DiscardMemory() noexcept { + assert(empty()); + + n_initialized = 0; + buffer.Discard(); + } + template<typename... Args> T *Allocate(Args&&... args) { assert(n_initialized <= buffer.size()); @@ -131,9 +138,7 @@ public: /* give memory back to the kernel when the last slice was freed */ if (n_allocated == 0) { - buffer.Discard(); - n_initialized = 0; - available = nullptr; + DiscardMemory(); } } };