diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-08-19 00:28:17 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-08-19 00:28:17 +0000 |
| commit | b473b07cffd38eba9e8fffd3210652f732798f0a (patch) | |
| tree | 05c57303379ee6d7edcecee98d925f037ee14c30 /clang/lib/Serialization | |
| parent | 27b91a74104e008d58bf183d9a5e9c7744a8beeb (diff) | |
| download | bcm5719-llvm-b473b07cffd38eba9e8fffd3210652f732798f0a.tar.gz bcm5719-llvm-b473b07cffd38eba9e8fffd3210652f732798f0a.zip | |
Make sure to deallocate the identifier lookup tables and selector tables
when destroying an ASTReader. Plugs a leak that shows up in libclang.
llvm-svn: 111488
Diffstat (limited to 'clang/lib/Serialization')
| -rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index eade7650791..fb26851e3a3 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -448,15 +448,6 @@ ASTReader::~ASTReader() { delete Chain[e - i - 1]; } -ASTReader::PerFileData::PerFileData() - : StatCache(0), LocalNumSLocEntries(0), LocalNumTypes(0), TypeOffsets(0), - LocalNumDecls(0), DeclOffsets(0), LocalNumIdentifiers(0), - IdentifierOffsets(0), IdentifierTableData(0), IdentifierLookupTable(0), - LocalNumMacroDefinitions(0), MacroDefinitionOffsets(0), - NumPreallocatedPreprocessingEntities(0), SelectorLookupTable(0), - SelectorLookupTableData(0), SelectorOffsets(0), LocalNumSelectors(0) -{} - void ASTReader::setDeserializationListener(ASTDeserializationListener *Listener) { DeserializationListener = Listener; @@ -3838,3 +3829,18 @@ void ASTReader::FinishedDeserializing() { } --NumCurrentElementsDeserializing; } + +ASTReader::PerFileData::PerFileData() + : StatCache(0), LocalNumSLocEntries(0), LocalNumTypes(0), TypeOffsets(0), + LocalNumDecls(0), DeclOffsets(0), LocalNumIdentifiers(0), + IdentifierOffsets(0), IdentifierTableData(0), IdentifierLookupTable(0), + LocalNumMacroDefinitions(0), MacroDefinitionOffsets(0), + NumPreallocatedPreprocessingEntities(0), SelectorLookupTable(0), + SelectorLookupTableData(0), SelectorOffsets(0), LocalNumSelectors(0) +{} + +ASTReader::PerFileData::~PerFileData() { + delete static_cast<ASTIdentifierLookupTable *>(IdentifierLookupTable); + delete static_cast<ASTSelectorLookupTable *>(SelectorLookupTable); +} + |

