aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNaios <naios-dev@live.de>2016-09-15 13:08:10 +0200
committerNaios <naios-dev@live.de>2016-09-15 15:15:55 +0200
commit7ad7729696d704f61d3d95ba7934abca1113ac18 (patch)
tree9de8f9c0abb6a409fadd36a6f435c1254ab175f5 /src
parent0eb573b7bd72f8462ccd3f0660fbe1c51e9ee217 (diff)
Core/Scripts: Fix a crash when swapping creatures with pending vehicle join events.
* Closes #17833 (cherry picked from commit 600e0be7e1f1654a2223ef22559dbd3adb6b100a)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp9
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.h1
2 files changed, 3 insertions, 7 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index 9f3c91f2e35..f11d5e0e1ec 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -724,12 +724,6 @@ void Vehicle::RemovePendingEventsForPassenger(Unit* passenger)
}
}
-VehicleJoinEvent::~VehicleJoinEvent()
-{
- if (Target)
- Target->RemovePendingEvent(this);
-}
-
/**
* @fn bool VehicleJoinEvent::Execute(uint64, uint32)
*
@@ -847,6 +841,9 @@ void VehicleJoinEvent::Abort(uint64)
TC_LOG_DEBUG("entities.vehicle", "Passenger %s, Entry: %u, board on vehicle %s, Entry: %u SeatId: %d cancelled",
Passenger->GetGUID().ToString().c_str(), Passenger->GetEntry(), Target->GetBase()->GetGUID().ToString().c_str(), Target->GetBase()->GetEntry(), (int32)Seat->first);
+ /// Remove the pending event when Abort was called on the event directly
+ Target->RemovePendingEvent(this);
+
/// @SPELL_AURA_CONTROL_VEHICLE auras can be applied even when the passenger is not (yet) on the vehicle.
/// When this code is triggered it means that something went wrong in @Vehicle::AddPassenger, and we should remove
/// the aura manually.
diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h
index 6433004c744..daf3c101ba5 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.h
+++ b/src/server/game/Entities/Vehicle/Vehicle.h
@@ -123,7 +123,6 @@ class TC_GAME_API VehicleJoinEvent : public BasicEvent
friend class Vehicle;
protected:
VehicleJoinEvent(Vehicle* v, Unit* u) : Target(v), Passenger(u), Seat(Target->Seats.end()) { }
- ~VehicleJoinEvent();
bool Execute(uint64, uint32) override;
void Abort(uint64) override;