[cfe-commits] r144880 - in /cfe/trunk: include/clang/Lex/ModuleMap.h lib/Lex/ModuleMap.cpp

Douglas Gregor dgregor at apple.com
Wed Nov 16 18:05:44 PST 2011


Author: dgregor
Date: Wed Nov 16 20:05:44 2011
New Revision: 144880

URL: http://llvm.org/viewvc/llvm-project?rev=144880&view=rev
Log:
Actually free memory for the module maps

Modified:
    cfe/trunk/include/clang/Lex/ModuleMap.h
    cfe/trunk/lib/Lex/ModuleMap.cpp

Modified: cfe/trunk/include/clang/Lex/ModuleMap.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/ModuleMap.h?rev=144880&r1=144879&r2=144880&view=diff
==============================================================================
--- cfe/trunk/include/clang/Lex/ModuleMap.h (original)
+++ cfe/trunk/include/clang/Lex/ModuleMap.h Wed Nov 16 20:05:44 2011
@@ -73,7 +73,9 @@
       : 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; }
     

Modified: cfe/trunk/lib/Lex/ModuleMap.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/ModuleMap.cpp?rev=144880&r1=144879&r2=144880&view=diff
==============================================================================
--- cfe/trunk/lib/Lex/ModuleMap.cpp (original)
+++ cfe/trunk/lib/Lex/ModuleMap.cpp Wed Nov 16 20:05:44 2011
@@ -31,6 +31,15 @@
 // 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() {
+  for (llvm::StringMap<Module *>::iterator I = Modules.begin(), 
+                                        IEnd = Modules.end();
+       I != IEnd; ++I) {
+    delete I->getValue();
+  }
+  
   delete SourceMgr;
 }
 





More information about the cfe-commits mailing list