From a63f7ba43c9200dd385b34c658c500eedc222e3f Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Mon, 30 Sep 2002 16:25:02 -0400 Subject: BUG: fix load command stuff for cygwin and cleanup at exit --- Source/MFCDialog/CMakeSetup.cpp | 2 ++ Source/Makefile.in | 2 ++ Source/cmDynamicLoader.cxx | 8 +++++--- Source/cmakemain.cxx | 15 +++++++++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Source/MFCDialog/CMakeSetup.cpp b/Source/MFCDialog/CMakeSetup.cpp index 808448c..aadeb34 100644 --- a/Source/MFCDialog/CMakeSetup.cpp +++ b/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; diff --git a/Source/Makefile.in b/Source/Makefile.in index d44e29f..57763b5 100644 --- a/Source/Makefile.in +++ b/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) diff --git a/Source/cmDynamicLoader.cxx b/Source/cmDynamicLoader.cxx index 7e21a7f..75c3850 100644 --- a/Source/cmDynamicLoader.cxx +++ b/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::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() diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index c882101..7086e8f 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -17,9 +17,21 @@ #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; std::vector args; @@ -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); } -- cgit v0.12