diff options
| author | Machiavelli <none@none> | 2010-12-24 19:46:11 +0100 |
|---|---|---|
| committer | Machiavelli <none@none> | 2010-12-24 19:46:11 +0100 |
| commit | 398d71285d35f947c6416fd6b0124694729276e9 (patch) | |
| tree | 43c3782a41c1cd552c2e7ee7e7f773ffeeea3d75 | |
| parent | 1e736fb32a852de599c517301f4535e0e03df0db (diff) | |
Core: Fix a possible crash in WorldSession::ProcessQueryCallbacks
Author: Cyberbrest
Closes issue #5262
--HG--
branch : trunk
| -rwxr-xr-x | src/server/game/Globals/ObjectMgr.h | 2 | ||||
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/QueryHandler.cpp | 2 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 8 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index 19eb575ac94..78a912e00bf 100755 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -867,7 +867,7 @@ class ObjectMgr void LoadCreatures(); void LoadLinkedRespawn(); bool SetCreatureLinkedRespawn(uint32 guid, uint32 linkedGuid); - void LoadCreatureRespawnTimes(); + void LoadLinkedRespawnTimes(); void LoadCreatureAddons(); void LoadCreatureModelInfo(); void LoadEquipmentTemplates(); diff --git a/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp b/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp index 4ac24c843df..e79098fb8a4 100755 --- a/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/QueryHandler.cpp @@ -58,7 +58,7 @@ void WorldSession::SendNameQueryOpcode(Player *p) void WorldSession::SendNameQueryOpcodeFromDB(uint64 guid) { - ACE_Future<QueryResult> lFutureResult = + QueryResultFuture lFutureResult = CharacterDatabase.AsyncPQuery( !sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) ? // ------- Query Without Declined Names -------- diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index f76f67b7c08..7b4db102fd5 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1003,8 +1003,12 @@ void WorldSession::ProcessQueryCallbacks() if (m_nameQueryCallbacks.next_readable(lResult, &timeout) != 1) break; - lResult.get(result); - SendNameQueryOpcodeFromDBCallBack(result); + if (lResult.ready()) + { + lResult.get(result); + SendNameQueryOpcodeFromDBCallBack(result); + lResult.cancel(); + } } //! HandleCharEnumOpcode |
