dont call iterator::end() on every cycle and dont read already-deleted memory

llvm-svn: 61015
This commit is contained in:
Nuno Lopes
2008-12-14 21:53:25 +00:00
parent a66e9f4218
commit 3167976f77

View File

@@ -261,10 +261,11 @@ DeclarationNameTable::DeclarationNameTable() {
DeclarationNameTable::~DeclarationNameTable() {
llvm::FoldingSet<CXXSpecialName> *set =
static_cast<llvm::FoldingSet<CXXSpecialName>*>(CXXSpecialNamesImpl);
llvm::FoldingSetIterator<CXXSpecialName> it = set->begin();
llvm::FoldingSetIterator<CXXSpecialName> I = set->begin(), E = set->end();
while (it != set->end()) {
delete &*it++;
while (I != E) {
CXXSpecialName *n = &*I++;
delete n;
}
delete set;