From 509882b5f64df8ec2d86c0c7f36d724d90a3736a Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sat, 7 Jul 2018 11:43:57 +0300 Subject: [PATCH] [Client] Rework MechanicsHelper::getTarget() to avoid crashes --- apps/openmw/mwmp/MechanicsHelper.cpp | 42 +++++++++++++++------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/apps/openmw/mwmp/MechanicsHelper.cpp b/apps/openmw/mwmp/MechanicsHelper.cpp index 19a67dbb1..d8009391e 100644 --- a/apps/openmw/mwmp/MechanicsHelper.cpp +++ b/apps/openmw/mwmp/MechanicsHelper.cpp @@ -97,31 +97,33 @@ MWWorld::Ptr MechanicsHelper::getPlayerPtr(const Target& target) mwmp::Target MechanicsHelper::getTarget(const MWWorld::Ptr& ptr) { mwmp::Target target; + clearTarget(target); - if (ptr == MWBase::Environment::get().getWorld()->getPlayerPtr()) + if (ptr != nullptr) { - target.isPlayer = true; - target.guid = mwmp::Main::get().getLocalPlayer()->guid; - } - else if (mwmp::PlayerList::isDedicatedPlayer(ptr)) - { - target.isPlayer = true; - target.guid = mwmp::PlayerList::getPlayer(ptr)->guid; - } - else - { - MWWorld::CellRef *ptrRef = &ptr.getCellRef(); - - if (ptrRef) + if (ptr == MWBase::Environment::get().getWorld()->getPlayerPtr()) { - target.isPlayer = false; - target.refId = ptrRef->getRefId(); - target.refNumIndex = ptrRef->getRefNum().mIndex; - target.mpNum = ptrRef->getMpNum(); - target.name = ptr.getClass().getName(ptr); + target.isPlayer = true; + target.guid = mwmp::Main::get().getLocalPlayer()->guid; + } + else if (mwmp::PlayerList::isDedicatedPlayer(ptr)) + { + target.isPlayer = true; + target.guid = mwmp::PlayerList::getPlayer(ptr)->guid; } else - clearTarget(target); + { + MWWorld::CellRef *ptrRef = &ptr.getCellRef(); + + if (ptrRef) + { + target.isPlayer = false; + target.refId = ptrRef->getRefId(); + target.refNumIndex = ptrRef->getRefNum().mIndex; + target.mpNum = ptrRef->getMpNum(); + target.name = ptr.getClass().getName(ptr); + } + } } return target;