From 7808a0181cf1c4a5682691ead613bc1ffcca32ea Mon Sep 17 00:00:00 2001 From: cantor Date: Fri, 2 Apr 2010 00:20:55 +0000 Subject: [PATCH] Expose shutdown method to address race condition. git-svn-id: https://svn.middleware.georgetown.edu/cpp-xmltooling/branches/REL_1@728 de75baf8-a10c-0410-a50a-987c0e22f00f --- xmltooling/util/ReloadableXMLFile.cpp | 8 ++++++-- xmltooling/util/ReloadableXMLFile.h | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/xmltooling/util/ReloadableXMLFile.cpp b/xmltooling/util/ReloadableXMLFile.cpp index f8c4b00..fa37518 100644 --- a/xmltooling/util/ReloadableXMLFile.cpp +++ b/xmltooling/util/ReloadableXMLFile.cpp @@ -160,6 +160,12 @@ ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log) ReloadableXMLFile::~ReloadableXMLFile() { + shutdown(); + delete m_lock; +} + +void ReloadableXMLFile::shutdown() +{ if (m_reload_thread) { // Shut down the reload thread and let it know. m_shutdown = true; @@ -168,8 +174,6 @@ ReloadableXMLFile::~ReloadableXMLFile() delete m_reload_thread; delete m_reload_wait; } - - delete m_lock; } void* ReloadableXMLFile::reload_fn(void* pv) diff --git a/xmltooling/util/ReloadableXMLFile.h b/xmltooling/util/ReloadableXMLFile.h index bf32fcf..a990f5e 100644 --- a/xmltooling/util/ReloadableXMLFile.h +++ b/xmltooling/util/ReloadableXMLFile.h @@ -111,6 +111,11 @@ namespace xmltooling { */ virtual Lockable* getBackupLock(); + /** + * Shuts down reload thread, should be called from subclass destructor. + */ + void shutdown(); + /** Root of the original DOM element passed into constructor. */ const xercesc::DOMElement* m_root; -- 2.1.4