summaryrefslogtreecommitdiff
path: root/include/llvm/Support/YAMLTraits.h
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2013-11-18 09:31:53 +0000
committerAlexey Samsonov <samsonov@google.com>2013-11-18 09:31:53 +0000
commitb21ab43cfc3fa0dacf5c95f04e58b6d804b59a16 (patch)
tree12f522231a5b3a875b1ac733a5bf1b1025088c7c /include/llvm/Support/YAMLTraits.h
parent69b2447b6a3fcc303e03cba8c7c50d745b0284d2 (diff)
downloadllvm-b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16.tar.gz
llvm-b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16.tar.bz2
llvm-b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16.tar.xz
Revert r194865 and r194874.
This change is incorrect. If you delete virtual destructor of both a base class and a subclass, then the following code: Base *foo = new Child(); delete foo; will not cause the destructor for members of Child class. As a result, I observe plently of memory leaks. Notable examples I investigated are: ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/YAMLTraits.h')
-rw-r--r--include/llvm/Support/YAMLTraits.h7
1 files changed, 2 insertions, 5 deletions
diff --git a/include/llvm/Support/YAMLTraits.h b/include/llvm/Support/YAMLTraits.h
index 4c271e035f..d6eeaace7b 100644
--- a/include/llvm/Support/YAMLTraits.h
+++ b/include/llvm/Support/YAMLTraits.h
@@ -723,7 +723,6 @@ private:
virtual bool canElideEmptySequence();
class HNode {
- virtual void anchor();
public:
HNode(Node *n) : _node(n) { }
virtual ~HNode() { }
@@ -733,9 +732,9 @@ private:
};
class EmptyHNode : public HNode {
- virtual void anchor();
public:
EmptyHNode(Node *n) : HNode(n) { }
+ virtual ~EmptyHNode() {}
static inline bool classof(const HNode *n) {
return NullNode::classof(n->_node);
}
@@ -743,9 +742,9 @@ private:
};
class ScalarHNode : public HNode {
- virtual void anchor();
public:
ScalarHNode(Node *n, StringRef s) : HNode(n), _value(s) { }
+ virtual ~ScalarHNode() { }
StringRef value() const { return _value; }
@@ -758,7 +757,6 @@ private:
};
class MapHNode : public HNode {
- virtual void anchor();
public:
MapHNode(Node *n) : HNode(n) { }
virtual ~MapHNode();
@@ -777,7 +775,6 @@ private:
};
class SequenceHNode : public HNode {
- virtual void anchor();
public:
SequenceHNode(Node *n) : HNode(n) { }
virtual ~SequenceHNode();