diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-10-19 17:40:53 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-10-19 17:40:53 +0000 |
commit | 2c8028bcf40f4bb44b3c73f788d2f63d2d353d9a (patch) | |
tree | 56e43937754e9ea307e5973ad2978a796fb9c1e6 /clang/lib/Lex/Preprocessor.cpp | |
parent | 6339f1ce2f3f6936c98004fc0883c747fa859435 (diff) | |
download | bcm5719-llvm-2c8028bcf40f4bb44b3c73f788d2f63d2d353d9a.tar.gz bcm5719-llvm-2c8028bcf40f4bb44b3c73f788d2f63d2d353d9a.zip |
In ~Preprocessor(), also cleanup the MacroInfo objects left-over from stray "#pragma push_macro" uses. This
fixes a potential memory leak.
llvm-svn: 116826
Diffstat (limited to 'clang/lib/Lex/Preprocessor.cpp')
-rw-r--r-- | clang/lib/Lex/Preprocessor.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index 5160acf19e1..56ed7659249 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -123,6 +123,13 @@ Preprocessor::~Preprocessor() { // memory alocated by MacroInfo. (*I)->Destroy(); } + for (llvm::DenseMap<IdentifierInfo*, std::vector<MacroInfo*> >::iterator I = + PragmaPushMacroInfo.begin(), E = PragmaPushMacroInfo.end(); I!=E; ++I){ + for (std::vector<MacroInfo*>::iterator I2 = I->second.begin(), E2 = I->second.end(); + I2 != E2; ++I2) { + (*I2)->Destroy(); + } + } // Free any cached macro expanders. for (unsigned i = 0, e = NumCachedTokenLexers; i != e; ++i) |