diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index e7c42cb57..56702d125 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -432,8 +432,14 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe spell->prepare(&(spell->m_targets)); - charmInfo->SetForcedSpell(0); - charmInfo->SetForcedTargetGUID(); + // spell->prepare() can delete charm info. + // Let's refresh the pointer. + charmInfo = pet->GetCharmInfo(); + if (charmInfo) + { + charmInfo->SetForcedSpell(0); + charmInfo->SetForcedTargetGUID(); + } } else if (pet->ToPet() && (result == SPELL_FAILED_LINE_OF_SIGHT || result == SPELL_FAILED_OUT_OF_RANGE)) {