]> granicus.if.org Git - re2c/commitdiff
Added 'clear()' method to slab allocator.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 25 Jun 2019 21:57:24 +0000 (22:57 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 25 Jun 2019 21:57:24 +0000 (22:57 +0100)
src/util/slab_allocator.h

index d4ef91bc1c4affd050187dcca8b99bbeddef422e..d441857fe66661faa554ca944d4d7c060917e549 100644 (file)
@@ -27,7 +27,14 @@ class slab_allocator_t
 public:
     slab_allocator_t(): slabs_(), current_slab_(0), current_slab_end_(0) {}
 
-    ~slab_allocator_t() { std::for_each(slabs_.rbegin(), slabs_.rend(), free); }
+    ~slab_allocator_t() { clear(); }
+
+    void clear()
+    {
+        std::for_each(slabs_.rbegin(), slabs_.rend(), free);
+        slabs_.clear();
+        current_slab_ = current_slab_end_ = 0;
+    }
 
     void *alloc(size_t size)
     {