From: Nuno Lopes Date: Wed, 17 Dec 2008 22:30:25 +0000 (+0000) Subject: fix a few more memory leaks: clean the ASTRecordLayouts, ASTObjCInterfaces and ASTRec... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b74668edbc119880eb0a7e563432314432cb775d;p=clang fix a few more memory leaks: clean the ASTRecordLayouts, ASTObjCInterfaces and ASTRecordForInterface maps git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61163 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index 4983d217c3..281b2cd5de 100644 --- a/lib/AST/ASTContext.cpp +++ b/lib/AST/ASTContext.cpp @@ -48,6 +48,33 @@ ASTContext::~ASTContext() { Types.pop_back(); } + { + llvm::DenseMap::iterator + I = ASTRecordLayouts.begin(), E = ASTRecordLayouts.end(); + while (I != E) { + ASTRecordLayout *R = const_cast((I++)->second); + delete R; + } + } + + { + llvm::DenseMap::iterator + I = ASTObjCInterfaces.begin(), E = ASTObjCInterfaces.end(); + while (I != E) { + ASTRecordLayout *R = const_cast((I++)->second); + delete R; + } + } + + { + llvm::DenseMap::iterator + I = ASTRecordForInterface.begin(), E = ASTRecordForInterface.end(); + while (I != E) { + RecordDecl *R = const_cast((I++)->second); + R->Destroy(*this); + } + } + TUDecl->Destroy(*this); }