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 | 127adb4462abc333f8c177919ecb708ebdf8d8ec (patch) | |
tree | cd65494085b25913d574a0b044e6117536fbab9e /clang/lib/AST/DeclarationName.cpp | |
parent | f312dc7729db8ce82aaa10b2344df0b92f431073 (diff) | |
download | bcm5719-llvm-127adb4462abc333f8c177919ecb708ebdf8d8ec.tar.gz bcm5719-llvm-127adb4462abc333f8c177919ecb708ebdf8d8ec.zip |
fix leakage of CXXSpecialName objects in DeclarationNameTable
llvm-svn: 61007
Diffstat (limited to 'clang/lib/AST/DeclarationName.cpp')
-rw-r--r-- | clang/lib/AST/DeclarationName.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/AST/DeclarationName.cpp b/clang/lib/AST/DeclarationName.cpp index af983feed1e..9ef938c06cb 100644 --- a/clang/lib/AST/DeclarationName.cpp +++ b/clang/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; } |