Browse Source

Revert "AK: Remove virtual destructors from non-virtual classes"

This reverts commit 4378d36f6701e0f4efe71ff1a301e3cd0776d5bf.
Idan Horowitz 4 years ago
parent
commit
f90c224fc5
2 changed files with 4 additions and 2 deletions
  1. 1 1
      AK/IntrusiveRedBlackTree.h
  2. 3 1
      AK/RedBlackTree.h

+ 1 - 1
AK/IntrusiveRedBlackTree.h

@@ -17,7 +17,7 @@ template<Integral K, typename V, IntrusiveRedBlackTreeNode<K> V::*member>
 class IntrusiveRedBlackTree : public BaseRedBlackTree<K> {
 class IntrusiveRedBlackTree : public BaseRedBlackTree<K> {
 public:
 public:
     IntrusiveRedBlackTree() = default;
     IntrusiveRedBlackTree() = default;
-    ~IntrusiveRedBlackTree()
+    virtual ~IntrusiveRedBlackTree() override
     {
     {
         clear();
         clear();
     }
     }

+ 3 - 1
AK/RedBlackTree.h

@@ -33,10 +33,12 @@ public:
             : key(key)
             : key(key)
         {
         {
         }
         }
+        virtual ~Node() {};
     };
     };
 
 
 protected:
 protected:
     BaseRedBlackTree() = default; // These are protected to ensure no one instantiates the leaky base red black tree directly
     BaseRedBlackTree() = default; // These are protected to ensure no one instantiates the leaky base red black tree directly
+    virtual ~BaseRedBlackTree() {};
 
 
     void rotate_left(Node* subtree_root)
     void rotate_left(Node* subtree_root)
     {
     {
@@ -416,7 +418,7 @@ template<Integral K, typename V>
 class RedBlackTree : public BaseRedBlackTree<K> {
 class RedBlackTree : public BaseRedBlackTree<K> {
 public:
 public:
     RedBlackTree() = default;
     RedBlackTree() = default;
-    ~RedBlackTree()
+    virtual ~RedBlackTree() override
     {
     {
         clear();
         clear();
     }
     }