diff options
author | Dan Goodliffe <randomdan@akira.random.lan> | 2014-12-01 16:36:13 +0000 |
---|---|---|
committer | Dan Goodliffe <randomdan@akira.random.lan> | 2014-12-01 16:36:13 +0000 |
commit | a0a756b788cad647a0b8a4c29fd23b11d0bc2d29 (patch) | |
tree | b44822fc4d8b551e80b140ccb6046af378f530de | |
parent | Don't cache a pointer to the row state instance, it might move! (diff) | |
download | project2-a0a756b788cad647a0b8a4c29fd23b11d0bc2d29.tar.bz2 project2-a0a756b788cad647a0b8a4c29fd23b11d0bc2d29.tar.xz project2-a0a756b788cad647a0b8a4c29fd23b11d0bc2d29.zip |
Clear script caches before libraries are unloaded
-rw-r--r-- | project2/basics/options/preload.cpp | 2 | ||||
-rw-r--r-- | project2/common/scripts.cpp | 6 | ||||
-rw-r--r-- | project2/common/scripts.h | 1 | ||||
-rw-r--r-- | project2/ice/iceDaemon.cpp | 2 | ||||
-rw-r--r-- | project2/ice/iceDataSource.cpp | 2 |
5 files changed, 13 insertions, 0 deletions
diff --git a/project2/basics/options/preload.cpp b/project2/basics/options/preload.cpp index 006391d..b3c126e 100644 --- a/project2/basics/options/preload.cpp +++ b/project2/basics/options/preload.cpp @@ -1,6 +1,7 @@ #include <pch.hpp> #include <options.h> #include <library.h> +#include <scripts.h> #include <boost/filesystem/path.hpp> #include <map> #include <dlfcn.h> @@ -41,6 +42,7 @@ class Preload { static void UnloadLibraries() { + ScriptReader::clearCache(); libs.clear(); } diff --git a/project2/common/scripts.cpp b/project2/common/scripts.cpp index 2b52db5..8801841 100644 --- a/project2/common/scripts.cpp +++ b/project2/common/scripts.cpp @@ -67,6 +67,12 @@ ScriptReader::load(const CommonObjects * co, bool childrenOnly) const loader.collectAll(co, childrenOnly, root()); } +void +ScriptReader::clearCache() +{ + scriptCache.clear(); +} + ScriptReaderPtr ScriptReader::resolveScript(const std::string & group, const std::string & name, bool ii) { diff --git a/project2/common/scripts.h b/project2/common/scripts.h index 7d43a01..775a080 100644 --- a/project2/common/scripts.h +++ b/project2/common/scripts.h @@ -73,6 +73,7 @@ class ScriptReader : public virtual IntrusivePtrBase { mutable LoaderBase loader; static ScriptReaderPtr resolveScript(const std::string & group, const std::string & name, bool ii); + static void clearCache(); friend class SourceObject; mutable std::map<std::string, SourceObject *> namedComponents; diff --git a/project2/ice/iceDaemon.cpp b/project2/ice/iceDaemon.cpp index 7f506d4..b9211f9 100644 --- a/project2/ice/iceDaemon.cpp +++ b/project2/ice/iceDaemon.cpp @@ -3,6 +3,7 @@ #include "buildComms.h" #include "buildDaemon.h" #include "iceViewSerializer.h" +#include <scripts.h> #include <scriptLoader.h> #include <options.h> #include <sys/stat.h> @@ -180,6 +181,7 @@ IceDaemon::GetComponentCompiler(const std::string & slice, const IceCompile::Dep void IceDaemon::ClearSlice() { + ScriptReader::clearCache(); libs.clear(); } diff --git a/project2/ice/iceDataSource.cpp b/project2/ice/iceDataSource.cpp index c3d5b36..1b0c9e8 100644 --- a/project2/ice/iceDataSource.cpp +++ b/project2/ice/iceDataSource.cpp @@ -1,6 +1,7 @@ #include <pch.hpp> #include "buildClient.h" #include "iceDataSource.h" +#include <scripts.h> #include <Ice/Ice.h> IceBase::Libs IceDataSource::libs; @@ -33,6 +34,7 @@ IceDataSource::GetComponentCompiler(const std::string & slice, const IceCompile: void IceDataSource::ClearSlice() { + ScriptReader::clearCache(); libs.clear(); proxies.clear(); } |