Expose shutdown method to address race condition.
authorcantor <cantor@de75baf8-a10c-0410-a50a-987c0e22f00f>
Fri, 2 Apr 2010 00:20:55 +0000 (00:20 +0000)
committercantor <cantor@de75baf8-a10c-0410-a50a-987c0e22f00f>
Fri, 2 Apr 2010 00:20:55 +0000 (00:20 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-xmltooling/branches/REL_1@728 de75baf8-a10c-0410-a50a-987c0e22f00f

xmltooling/util/ReloadableXMLFile.cpp
xmltooling/util/ReloadableXMLFile.h

index f8c4b00..fa37518 100644 (file)
@@ -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)
index bf32fcf..a990f5e 100644 (file)
@@ -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;