From f8a05d264f77f366bf9f367dc5c59262c190c017 Mon Sep 17 00:00:00 2001 From: megamage Date: Sat, 8 Aug 2009 12:12:56 -0500 Subject: [8318] Deleted as expected runnable objects at related Thread deleting for avoid memory leaks. Author: VladimirMangos [8319] Restore compile PGSQL support after last changes. Author: ApoC --HG-- branch : trunk --- src/shared/Database/Database.h | 2 +- src/shared/Database/DatabaseMysql.cpp | 4 ++-- src/shared/Database/DatabasePostgre.cpp | 4 ++-- src/shared/Threading.cpp | 5 ++++- src/shared/Threading.h | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src/shared') 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(); -- cgit v1.2.3