aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2013-02-16 16:12:24 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2013-02-16 16:12:24 +0100
commit35fc90c684caa8046c0b85c1a64776f7e7fb51fe (patch)
tree2f6b690c3cf424c4cd15aebd09b15ae5bb92d061 /src
parent1845ab791825f99b433ae4e961b467d0a509ac25 (diff)
Core/Vehicles: Fix another crash
Fixes #9225
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Vehicle/Vehicle.cpp5
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.h4
2 files changed, 6 insertions, 3 deletions
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index 5cbed1b3a64..4fb93a85fdf 100755
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -340,7 +340,7 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId)
SeatMap::iterator seat;
sLog->outDebug(LOG_FILTER_VEHICLES, "Unit %s scheduling enter vehicle entry %u id %u dbguid %u seat %d",
unit->GetName().c_str(), _me->GetEntry(), _vehicleInfo->m_ID, _me->GetGUIDLow(), seatId);
- VehicleJoinEvent* e = new VehicleJoinEvent(this, unit, seat);
+ VehicleJoinEvent* e = new VehicleJoinEvent(this, unit);
unit->m_Events.AddEvent(e, unit->m_Events.CalculateTime(0));
_pendingJoinEvents.push_back(e);
@@ -355,6 +355,8 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId)
CancelJoinEvent(e);
return false;
}
+
+ e->Seat = seat;
}
else
{
@@ -365,6 +367,7 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId)
return false;
}
+ e->Seat = seat;
if (seat->second.Passenger)
{
if (Unit* passenger = ObjectAccessor::GetUnit(*GetBase(), seat->second.Passenger))
diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h
index f8fa7f9b64a..25a68e0e511 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.h
+++ b/src/server/game/Entities/Vehicle/Vehicle.h
@@ -109,12 +109,12 @@ class VehicleJoinEvent : public BasicEvent
{
friend class Vehicle;
protected:
- VehicleJoinEvent(Vehicle* v, Unit* u, SeatMap::iterator& itr) : Target(v), Passenger(u), Seat(itr) {}
+ VehicleJoinEvent(Vehicle* v, Unit* u) : Target(v), Passenger(u), Seat(Target->Seats.end()) {}
bool Execute(uint64, uint32);
void Abort(uint64);
Vehicle* Target;
Unit* Passenger;
- SeatMap::iterator& Seat;
+ SeatMap::iterator Seat;
};
#endif