[cfe-commits] r145394 - in /cfe/trunk: include/clang/Parse/Parser.h lib/Parse/ParseObjc.cpp lib/Parse/Parser.cpp
Argyrios Kyrtzidis
akyrtzi at gmail.com
Tue Nov 29 00:14:54 PST 2011
Author: akirtzidis
Date: Tue Nov 29 02:14:54 2011
New Revision: 145394
URL: http://llvm.org/viewvc/llvm-project?rev=145394&view=rev
Log:
Fix leaking of LexedMethod objects created for caching objc method definitions tokens
for late parsing.
Modified:
cfe/trunk/include/clang/Parse/Parser.h
cfe/trunk/lib/Parse/ParseObjc.cpp
cfe/trunk/lib/Parse/Parser.cpp
Modified: cfe/trunk/include/clang/Parse/Parser.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Parser.h?rev=145394&r1=145393&r2=145394&view=diff
==============================================================================
--- cfe/trunk/include/clang/Parse/Parser.h (original)
+++ cfe/trunk/include/clang/Parse/Parser.h Tue Nov 29 02:14:54 2011
@@ -402,6 +402,9 @@
Tok.setKind(tok::eof);
}
+ /// \brief Clear and free the cached objc methods.
+ void clearLateParsedObjCMethods();
+
/// \brief Handle the annotation token produced for #pragma unused(...)
void HandlePragmaUnused();
Modified: cfe/trunk/lib/Parse/ParseObjc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseObjc.cpp?rev=145394&r1=145393&r2=145394&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseObjc.cpp (original)
+++ cfe/trunk/lib/Parse/ParseObjc.cpp Tue Nov 29 02:14:54 2011
@@ -1500,7 +1500,7 @@
// missing @implementation
Diag(atEnd.getBegin(), diag::err_expected_implementation);
- LateParsedObjCMethods.clear();
+ clearLateParsedObjCMethods();
ObjCImpDecl = 0;
return Actions.BuildDeclaratorGroup(
DeclsInGroup.data(), DeclsInGroup.size(), false);
@@ -1515,6 +1515,14 @@
return Actions.ConvertDeclToDeclGroup(ImpDecl);
}
+void Parser::clearLateParsedObjCMethods() {
+ for (LateParsedObjCMethodContainer::iterator
+ I = LateParsedObjCMethods.begin(),
+ E = LateParsedObjCMethods.end(); I != E; ++I)
+ delete *I;
+ LateParsedObjCMethods.clear();
+}
+
/// compatibility-alias-decl:
/// @compatibility_alias alias-name class-name ';'
///
Modified: cfe/trunk/lib/Parse/Parser.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/Parser.cpp?rev=145394&r1=145393&r2=145394&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/Parser.cpp (original)
+++ cfe/trunk/lib/Parse/Parser.cpp Tue Nov 29 02:14:54 2011
@@ -370,6 +370,8 @@
it != LateParsedTemplateMap.end(); ++it)
delete it->second;
+ clearLateParsedObjCMethods();
+
// Remove the pragma handlers we installed.
PP.RemovePragmaHandler(AlignHandler.get());
AlignHandler.reset();
More information about the cfe-commits
mailing list