diff options
author | Nuno Lopes <nunoplopes@sapo.pt> | 2008-12-14 17:27:25 +0000 |
---|---|---|
committer | Nuno Lopes <nunoplopes@sapo.pt> | 2008-12-14 17:27:25 +0000 |
commit | 6d34ae5370a41268cc7c39b05e287cab1786fa8e (patch) | |
tree | 062de1224cae25ced2f948f75146414c88c857aa /lib/AST/DeclarationName.cpp | |
parent | 2ef9372b726081d737f64fde5fb2c6930fa31bdc (diff) |
fix leakage of CXXSpecialName objects in DeclarationNameTable
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61007 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclarationName.cpp')
-rw-r--r-- | lib/AST/DeclarationName.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/AST/DeclarationName.cpp b/lib/AST/DeclarationName.cpp index af983feed1..9ef938c06c 100644 --- a/lib/AST/DeclarationName.cpp +++ b/lib/AST/DeclarationName.cpp @@ -259,7 +259,16 @@ DeclarationNameTable::DeclarationNameTable() { } DeclarationNameTable::~DeclarationNameTable() { - delete static_cast<llvm::FoldingSet<CXXSpecialName>*>(CXXSpecialNamesImpl); + llvm::FoldingSet<CXXSpecialName> *set = + static_cast<llvm::FoldingSet<CXXSpecialName>*>(CXXSpecialNamesImpl); + llvm::FoldingSetIterator<CXXSpecialName> it = set->begin(); + + while (it != set->end()) { + CXXSpecialName *n = &*it++; + delete n; + } + + delete set; delete [] CXXOperatorNames; } |