aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Threading/Threading.cpp
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2013-08-25 14:12:32 +0100
committerNay <dnpd.dd@gmail.com>2013-08-25 14:12:32 +0100
commita7527b3b48ba864e923e5200b55879b48e552681 (patch)
tree059602de88fae48ef5ef374e7159d11f09b249d1 /src/server/shared/Threading/Threading.cpp
parent0d44191a834d65f68f367ec26001cc2823b41f51 (diff)
parentee3d3ab1ff5589036c41c236e4fc376f11854467 (diff)
Merge remote-tracking branch 'origin/master' into 4.3.4
Conflicts: src/server/game/Spells/SpellMgr.cpp src/server/scripts/Commands/cs_debug.cpp src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp src/tools/map_extractor/mpq_libmpq04.h
Diffstat (limited to 'src/server/shared/Threading/Threading.cpp')
-rw-r--r--src/server/shared/Threading/Threading.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/shared/Threading/Threading.cpp b/src/server/shared/Threading/Threading.cpp
index bd96c359616..34a7bf8bb9d 100644
--- a/src/server/shared/Threading/Threading.cpp
+++ b/src/server/shared/Threading/Threading.cpp
@@ -62,7 +62,7 @@ ThreadPriority::ThreadPriority()
//since we have only 7(seven) values in enum Priority
//and 3 we know already (Idle, Normal, Realtime) so
//we need to split each list [Idle...Normal] and [Normal...Realtime]
- //into ¹ piesces
+ //into piecies
const size_t _divider = 4;
size_t _div = (norm_pos - min_pos) / _divider;
if (_div == 0)
@@ -130,10 +130,13 @@ bool Thread::start()
if (m_task == 0 || m_iThreadId != 0)
return false;
+ // incRef before spawing the thread, otherwise Thread::ThreadTask() might call decRef and delete m_task
+ m_task->incReference();
+
bool res = (ACE_Thread::spawn(&Thread::ThreadTask, (void*)m_task, THREADFLAG, &m_iThreadId, &m_hThreadHandle) == 0);
- if (res)
- m_task->incReference();
+ if (!res)
+ m_task->decReference();
return res;
}