diff options
Diffstat (limited to 'src/shared')
| -rw-r--r-- | src/shared/Database/Database.h | 2 | ||||
| -rw-r--r-- | src/shared/Database/DatabaseMysql.cpp | 4 | ||||
| -rw-r--r-- | src/shared/Database/DatabasePostgre.cpp | 4 | ||||
| -rw-r--r-- | src/shared/Threading.cpp | 5 | ||||
| -rw-r--r-- | src/shared/Threading.h | 2 |
5 files changed, 10 insertions, 7 deletions
diff --git a/src/shared/Database/Database.h b/src/shared/Database/Database.h index 7f2bdaefdb7..c7390d08a1b 100644 --- a/src/shared/Database/Database.h +++ b/src/shared/Database/Database.h @@ -41,7 +41,7 @@ class TRINITY_DLL_SPEC Database TransactionQueues m_tranQueues; ///< Transaction queues from diff. threads QueryQueues m_queryQueues; ///< Query queues from diff threads - SqlDelayThread* m_threadBody; ///< Pointer to delay sql executer + SqlDelayThread* m_threadBody; ///< Pointer to delay sql executer (owned by m_delayThread) ACE_Based::Thread* m_delayThread; ///< Pointer to executer thread public: diff --git a/src/shared/Database/DatabaseMysql.cpp b/src/shared/Database/DatabaseMysql.cpp index 0189b5883f7..f08ea67cbbe 100644 --- a/src/shared/Database/DatabaseMysql.cpp +++ b/src/shared/Database/DatabaseMysql.cpp @@ -440,8 +440,8 @@ void DatabaseMysql::InitDelayThread() assert(!m_delayThread); //New delay thread for delay execute - m_threadBody = new MySQLDelayThread(this); - m_delayThread = new ACE_Based::Thread(*m_threadBody); + m_threadBody = new MySQLDelayThread(this); // will deleted at m_delayThread delete + m_delayThread = new ACE_Based::Thread(m_threadBody); } void DatabaseMysql::HaltDelayThread() diff --git a/src/shared/Database/DatabasePostgre.cpp b/src/shared/Database/DatabasePostgre.cpp index c70067dfdba..8d00285255b 100644 --- a/src/shared/Database/DatabasePostgre.cpp +++ b/src/shared/Database/DatabasePostgre.cpp @@ -366,8 +366,8 @@ void DatabasePostgre::InitDelayThread() assert(!m_delayThread); //New delay thread for delay execute - m_threadBody = new PGSQLDelayThread(this); - m_delayThread = new ACE_Based::Thread(*m_threadBody); + m_threadBody = new PGSQLDelayThread(this); // Will be deleted on m_delayThread delete + m_delayThread = new ACE_Based::Thread(m_threadBody); } void DatabasePostgre::HaltDelayThread() diff --git a/src/shared/Threading.cpp b/src/shared/Threading.cpp index 496e86353ca..25bd3120c4a 100644 --- a/src/shared/Threading.cpp +++ b/src/shared/Threading.cpp @@ -101,7 +101,7 @@ Thread::Thread() : m_task(0), m_iThreadId(0), m_hThreadHandle(0) } -Thread::Thread(Runnable& instance) : m_task(&instance), m_iThreadId(0), m_hThreadHandle(0) +Thread::Thread(Runnable* instance) : m_task(instance), m_iThreadId(0), m_hThreadHandle(0) { bool _start = start(); ASSERT (_start); @@ -110,6 +110,9 @@ Thread::Thread(Runnable& instance) : m_task(&instance), m_iThreadId(0), m_hThrea Thread::~Thread() { //Wait(); + + // deleted runnable object (owned by Thread) + delete m_task; } //initialize Thread's class static member diff --git a/src/shared/Threading.h b/src/shared/Threading.h index eac3c0e8efb..ab423696cd1 100644 --- a/src/shared/Threading.h +++ b/src/shared/Threading.h @@ -61,7 +61,7 @@ namespace ACE_Based { public: Thread(); - Thread(Runnable& instance); + explicit Thread(Runnable* instance); ~Thread(); bool start(); |
