mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[11445] Correct a possible crash, if caster of aura has disconnected after aura applied
A small code adjustment in addition, no need for caster at aura remove. Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
parent
b62c7f17f0
commit
6d28c7dfd0
3 changed files with 8 additions and 6 deletions
|
|
@ -8040,11 +8040,11 @@ void Aura::HandleAuraMirrorImage(bool apply, bool Real)
|
||||||
// Target of aura should always be creature (ref Spell::CheckCast)
|
// Target of aura should always be creature (ref Spell::CheckCast)
|
||||||
Creature* pCreature = (Creature*)GetTarget();
|
Creature* pCreature = (Creature*)GetTarget();
|
||||||
|
|
||||||
// Caster can be player or creature, the unit who pCreature will become an clone of.
|
|
||||||
Unit* caster = GetCaster();
|
|
||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
|
// Caster can be player or creature, the unit who pCreature will become an clone of.
|
||||||
|
Unit* caster = GetCaster();
|
||||||
|
|
||||||
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 0, caster->getRace());
|
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 0, caster->getRace());
|
||||||
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 1, caster->getClass());
|
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 1, caster->getClass());
|
||||||
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 2, caster->getGender());
|
pCreature->SetByteValue(UNIT_FIELD_BYTES_0, 2, caster->getGender());
|
||||||
|
|
|
||||||
|
|
@ -638,7 +638,7 @@ void WorldSession::HandleGetMirrorimageData(WorldPacket& recv_data)
|
||||||
data << (uint8)pCreature->getGender();
|
data << (uint8)pCreature->getGender();
|
||||||
data << (uint8)pCreature->getClass();
|
data << (uint8)pCreature->getClass();
|
||||||
|
|
||||||
if (pCaster->GetTypeId() == TYPEID_PLAYER)
|
if (pCaster && pCaster->GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
Player* pPlayer = (Player*)pCaster;
|
Player* pPlayer = (Player*)pCaster;
|
||||||
|
|
||||||
|
|
@ -677,7 +677,9 @@ void WorldSession::HandleGetMirrorimageData(WorldPacket& recv_data)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// No data when cloner is not player, data is taken from CreatureDisplayInfoExtraEntry by model already
|
// pCaster may have been NULL (usually not expected, but may happen at disconnect, etc)
|
||||||
|
// OR
|
||||||
|
// pCaster is not player, data is taken from CreatureDisplayInfoExtraEntry by model already
|
||||||
data << (uint8)0;
|
data << (uint8)0;
|
||||||
data << (uint8)0;
|
data << (uint8)0;
|
||||||
data << (uint8)0;
|
data << (uint8)0;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11444"
|
#define REVISION_NR "11445"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue