diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-11-17 02:05:44 +0000 | 
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-11-17 02:05:44 +0000 | 
| commit | 5acdf59ebc6839fc877604168eb96a76fdb51e77 (patch) | |
| tree | e92be16d0be0885bb524a80c8c2827ba6fdde1fe /clang | |
| parent | 667971778c11243f98ebc77d75c98a9ee0e92aa7 (diff) | |
| download | bcm5719-llvm-5acdf59ebc6839fc877604168eb96a76fdb51e77.tar.gz bcm5719-llvm-5acdf59ebc6839fc877604168eb96a76fdb51e77.zip  | |
Actually free memory for the module maps
llvm-svn: 144880
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/include/clang/Lex/ModuleMap.h | 4 | ||||
| -rw-r--r-- | clang/lib/Lex/ModuleMap.cpp | 15 | 
2 files changed, 18 insertions, 1 deletions
diff --git a/clang/include/clang/Lex/ModuleMap.h b/clang/include/clang/Lex/ModuleMap.h index e9bf1b35c14..b1eaebddb20 100644 --- a/clang/include/clang/Lex/ModuleMap.h +++ b/clang/include/clang/Lex/ModuleMap.h @@ -73,7 +73,9 @@ public:        : Name(Name), DefinitionLoc(DefinitionLoc), Parent(Parent),           UmbrellaHeader(0), IsExplicit(IsExplicit) {      } -            +      +    ~Module(); +          /// \brief Determine whether this module is a submodule.      bool isSubModule() const { return Parent != 0; } diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp index 0c51659cab8..393118110af 100644 --- a/clang/lib/Lex/ModuleMap.cpp +++ b/clang/lib/Lex/ModuleMap.cpp @@ -31,6 +31,15 @@ using namespace clang;  // Module  //----------------------------------------------------------------------------// +ModuleMap::Module::~Module() { +  for (llvm::StringMap<Module *>::iterator I = SubModules.begin(),  +                                        IEnd = SubModules.end(); +       I != IEnd; ++I) { +    delete I->getValue(); +  } + +} +  std::string ModuleMap::Module::getFullModuleName() const {    llvm::SmallVector<StringRef, 2> Names; @@ -72,6 +81,12 @@ ModuleMap::ModuleMap(FileManager &FileMgr, const DiagnosticConsumer &DC) {  }  ModuleMap::~ModuleMap() { +  for (llvm::StringMap<Module *>::iterator I = Modules.begin(),  +                                        IEnd = Modules.end(); +       I != IEnd; ++I) { +    delete I->getValue(); +  } +      delete SourceMgr;  }  | 

