aboutsummaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authormegamage <none@none>2009-08-08 12:12:56 -0500
committermegamage <none@none>2009-08-08 12:12:56 -0500
commitf8a05d264f77f366bf9f367dc5c59262c190c017 (patch)
tree4d02f63f3dddba3b5ff3154832c1c491a894f358 /src/shared
parent658538a092014f270000932db6b61d4e8efed83f (diff)
[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
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/Database/Database.h2
-rw-r--r--src/shared/Database/DatabaseMysql.cpp4
-rw-r--r--src/shared/Database/DatabasePostgre.cpp4
-rw-r--r--src/shared/Threading.cpp5
-rw-r--r--src/shared/Threading.h2
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();