From 2e43774c2fccdacc28c5cea269c6868fc17e0706 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 9 Mar 2016 15:52:42 +0100 Subject: [PATCH] + terminate xerces at program exit --- src/App/Application.cpp | 1 + src/Base/Parameter.cpp | 7 +++++++ src/Base/Parameter.h | 3 +-- src/Base/XMLTools.cpp | 9 +++++++++ src/Base/XMLTools.h | 4 ++++ 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 390cefc34..0c3311381 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -922,6 +922,7 @@ void Application::destruct(void) ScriptFactorySingleton::Destruct(); InterpreterSingleton::Destruct(); Base::Type::destruct(); + ParameterManager::Terminate(); } void Application::destructObserver(void) diff --git a/src/Base/Parameter.cpp b/src/Base/Parameter.cpp index 0e563bace..4644cb6ae 100644 --- a/src/Base/Parameter.cpp +++ b/src/Base/Parameter.cpp @@ -1062,6 +1062,13 @@ void ParameterManager::Init(void) } } +void ParameterManager::Terminate(void) +{ + StrXUTF8::terminate(); + XUTF8Str::terminate(); + XMLPlatformUtils::Terminate(); +} + //************************************************************************** // Document handling diff --git a/src/Base/Parameter.h b/src/Base/Parameter.h index a62e90aac..b6599d65e 100644 --- a/src/Base/Parameter.h +++ b/src/Base/Parameter.h @@ -218,8 +218,6 @@ public: std::vector > GetASCIIMap(const char * sFilter = NULL) const; //@} - static void Init(void); - friend class ParameterManager; /// returns the name @@ -278,6 +276,7 @@ public: ParameterManager(); ~ParameterManager(); static void Init(void); + static void Terminate(void); int LoadDocument(const char* sFileName); int LoadDocument(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource&); diff --git a/src/Base/XMLTools.cpp b/src/Base/XMLTools.cpp index 5c0ec9b6a..9f4623862 100644 --- a/src/Base/XMLTools.cpp +++ b/src/Base/XMLTools.cpp @@ -35,3 +35,12 @@ using namespace Base; std::auto_ptr StrXUTF8::transcoder; std::auto_ptr XUTF8Str::transcoder; +void StrXUTF8::terminate() +{ + transcoder.reset(); +} + +void XUTF8Str::terminate() +{ + transcoder.reset(); +} diff --git a/src/Base/XMLTools.h b/src/Base/XMLTools.h index abcef1c71..250a7059a 100644 --- a/src/Base/XMLTools.h +++ b/src/Base/XMLTools.h @@ -114,6 +114,8 @@ public : /// string which holds the UTF-8 form std::string str; + static void terminate(); + private : static std::auto_ptr transcoder; // This is the local code page form of the string. @@ -231,6 +233,8 @@ public : /// Getter method const XMLCh* unicodeForm() const; + static void terminate(); + private : std::basic_string str; static std::auto_ptr transcoder;