aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiacomo Pozzoni <giacomopoz@gmail.com>2019-01-15 15:37:12 +0100
committerShauren <shauren.trinity@gmail.com>2021-11-21 19:51:52 +0100
commitb1b5a6a591be621e23905a7f320a3db1dc96cf7f (patch)
treed631dc6dfa1353d721bc1b008bf6045142d148ac
parent4c4aad1c4b3c1068e6fe5c029d2276d82a5a9d25 (diff)
Core/Quest: Fix crash in GetQuestDialogStatus()
Fix possible NULL dereference in GetQuestDialogStatus() Fixes #22516 (cherry picked from commit 6859dfa2d157f0d174004a00a9d047d6eb38f9a1)
-rw-r--r--src/server/game/Entities/Player/Player.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index a8dc4d1919f..f9fe83239d4 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -16496,16 +16496,18 @@ QuestGiverStatus Player::GetQuestDialogStatus(Object* questgiver)
{
case TYPEID_GAMEOBJECT:
{
- if (Optional<QuestGiverStatus> questStatus = questgiver->ToGameObject()->AI()->GetDialogStatus(this))
- return *questStatus;
+ if (GameObjectAI* ai = questgiver->ToGameObject()->AI())
+ if (Optional<QuestGiverStatus> questStatus = ai->GetDialogStatus(this))
+ return *questStatus;
qr = sObjectMgr->GetGOQuestRelationBounds(questgiver->GetEntry());
qir = sObjectMgr->GetGOQuestInvolvedRelationBounds(questgiver->GetEntry());
break;
}
case TYPEID_UNIT:
{
- if (Optional<QuestGiverStatus> questStatus = questgiver->ToCreature()->AI()->GetDialogStatus(this))
- return *questStatus;
+ if (CreatureAI* ai = questgiver->ToCreature()->AI())
+ if (Optional<QuestGiverStatus> questStatus = questgiver->ToCreature()->AI()->GetDialogStatus(this))
+ return *questStatus;
qr = sObjectMgr->GetCreatureQuestRelationBounds(questgiver->GetEntry());
qir = sObjectMgr->GetCreatureQuestInvolvedRelationBounds(questgiver->GetEntry());
break;