aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2019-06-23 16:45:32 +0200
committerTreeston <treeston.mmoc@gmail.com>2019-06-23 16:45:32 +0200
commitf4b06fd0b7ead843bba8f5215a09abf7976e012c (patch)
tree615a9dc5a6063fc16f5476ad7a8c6fa86c35420d /src/server/game/Entities/Unit
parent396f87c30dff1b50f1eb0d924778a7fbab7e8d11 (diff)
Entities/Unit: Fix an issue where Unit pointers could be left dangling if a channeled Charm was interrupted by a control aura application. Closes #23440.
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 4c36de9b22e..68411bcd0b3 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11055,12 +11055,14 @@ void Unit::SetControlled(bool apply, UnitState state)
if (HasUnitState(state))
return;
+ if (state & UNIT_STATE_CONTROLLED)
+ CastStop();
+
AddUnitState(state);
switch (state)
{
case UNIT_STATE_STUNNED:
SetStunned(true);
- CastStop();
break;
case UNIT_STATE_ROOT:
if (!HasUnitState(UNIT_STATE_STUNNED))
@@ -11073,7 +11075,6 @@ void Unit::SetControlled(bool apply, UnitState state)
SendMeleeAttackStop();
// SendAutoRepeatCancel ?
SetConfused(true);
- CastStop();
}
break;
case UNIT_STATE_FLEEING:
@@ -11083,7 +11084,6 @@ void Unit::SetControlled(bool apply, UnitState state)
SendMeleeAttackStop();
// SendAutoRepeatCancel ?
SetFeared(true);
- CastStop();
}
break;
default: