Просмотр исходного кода

BUG: fix load command stuff for cygwin and cleanup at exit

Bill Hoffman 23 лет назад
Родитель
Сommit
a63f7ba43c
4 измененных файлов с 22 добавлено и 5 удалено
  1. 2 0
      Source/MFCDialog/CMakeSetup.cpp
  2. 2 0
      Source/Makefile.in
  3. 5 3
      Source/cmDynamicLoader.cxx
  4. 13 2
      Source/cmakemain.cxx

+ 2 - 0
Source/MFCDialog/CMakeSetup.cpp

@@ -7,6 +7,7 @@
 #include "CMakeCommandLineInfo.h" 
 #include "../cmListFileCache.h"
 #include "../cmCacheManager.h"
+#include "../cmDynamicLoader.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -77,6 +78,7 @@ BOOL CMakeSetup::InitInstance()
 
   // clean up globals 
   cmListFileCache::GetInstance()->ClearCache(); 
+  cmDynamicLoader::FlushCache();
   // Since the dialog has been closed, return FALSE so that we exit the
   //  application, rather than start the application's message pump.
   return FALSE;

+ 2 - 0
Source/Makefile.in

@@ -32,6 +32,7 @@ cmTarget.o \
 cmCustomCommand.o \
 cmCacheManager.o \
 cmListFileCache.o \
+cmDynamicLoader.o \
 cmSourceGroup.o
 
 DEPENDS = cmConfigure.h
@@ -53,6 +54,7 @@ cmLocalUnixMakefileGenerator.o : $(DEPENDS)
 cmCommands.o : $(DEPENDS) $(srcdir)/*Command*.cxx
 cmTarget.o : $(DEPENDS)
 cmCacheManager.o : $(DEPENDS)
+cmDynamicLoader.o : $(DEPENDS)
 cmSourceGroup.o : $(DEPENDS)
 
 

+ 5 - 3
Source/cmDynamicLoader.cxx

@@ -44,7 +44,6 @@ cmDynamicLoaderCache* cmDynamicLoaderCache::Instance = 0;
 
 cmDynamicLoaderCache::~cmDynamicLoaderCache()
 {
-  this->FlushCache();
 }
 
 void cmDynamicLoaderCache::CacheFile(const char* path, const cmLibHandle& p)
@@ -71,13 +70,16 @@ bool cmDynamicLoaderCache::GetCacheFile(const char* path, cmLibHandle& p)
 bool cmDynamicLoaderCache::FlushCache(const char* path)
 {
   std::map<std::string, cmLibHandle>::iterator it = m_CacheMap.find(path);
+  bool ret = false;
   if ( it != m_CacheMap.end() )
     {
     cmDynamicLoader::CloseLibrary(it->second);
     m_CacheMap.erase(it);
-    return true;
+    ret = true;
     }
-  return false;
+  delete cmDynamicLoaderCache::Instance;
+  cmDynamicLoaderCache::Instance = 0;
+  return ret;
 }
 
 void cmDynamicLoaderCache::FlushCache()

+ 13 - 2
Source/cmakemain.cxx

@@ -17,8 +17,20 @@
 #include "cmakewizard.h"
 #include "cmake.h"
 #include "cmCacheManager.h"
+#include "cmDynamicLoader.h"
+#include "cmListFileCache.h"
+
+int do_cmake(int ac, char** av);
 
 int main(int ac, char** av)
+{
+  int ret = do_cmake(ac, av);
+  cmDynamicLoader::FlushCache();
+  cmListFileCache::GetInstance()->ClearCache(); 
+  return ret;
+}
+
+int do_cmake(int ac, char** av)
 {
   bool wiz = false;
   bool command = false;
@@ -54,6 +66,5 @@ int main(int ac, char** av)
     return 0;
     }
   cmake cm;
-  int ret = cm.Run(args);
-  return ret;  
+  return cm.Run(args); 
 }