On Dec 14, 2008, at 9:27 AM, Nuno Lopes wrote: > Author: nlopes > Date: Sun Dec 14 11:27:25 2008 > New Revision: 61007 > > URL: http://llvm.org/viewvc/llvm-project?rev=61007&view=rev > Log: > fix leakage of CXXSpecialName objects in DeclarationNameTable
Thanks Nuno! Please don't call set->end() every time through the loop though. :) Something like this should work: for (llvm::FoldingSetIterator<CXXSpecialName> I = set->begin(), E = set->end(); I != E; ++I) .. > > > Modified: > cfe/trunk/lib/AST/DeclarationName.cpp > > Modified: cfe/trunk/lib/AST/DeclarationName.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclarationName.cpp?rev=61007&r1=61006&r2=61007&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/AST/DeclarationName.cpp (original) > +++ cfe/trunk/lib/AST/DeclarationName.cpp Sun Dec 14 11:27:25 2008 > @@ -259,7 +259,16 @@ > } > > 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; > } > > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
