Core/Vehicles: Fixed calling Vehicle::Uninstall on freed memory

Valgrind log:
    ==7723== Invalid read of size 8
    ==7723==    at 0x10753CE: Vehicle::GetBase() const (Vehicle.h:51)
    ==7723==    by 0x1072449: Vehicle::Uninstall() (Vehicle.cpp:159)
    ==7723==    by 0x10B1E3C: Unit::RemoveVehicleKit() (Unit.cpp:15946)
    ==7723==    by 0x10A8F32: Unit::RemoveFromWorld() (Unit.cpp:13441)
    ==7723==    by 0x11A4703: Creature::RemoveFromWorld() (Creature.cpp:203)
    ==7723==    by 0x11B9AB7: TempSummon::RemoveFromWorld() (TemporarySummon.cpp:279)
    ==7723==    by 0x11B9C6C: Minion::RemoveFromWorld() (TemporarySummon.cpp:308)
    ==7723==    by 0x10A917C: Unit::CleanupBeforeRemoveFromMap(bool) (Unit.cpp:13482)
    ==7723==    by 0x10A926C: Unit::CleanupsBeforeDelete(bool) (Unit.cpp:13504)
    ==7723==    by 0x12DBB89: Map::AddObjectToRemoveList(WorldObject*) (Map.cpp:2108)
    ==7723==    by 0x10F4556: WorldObject::AddObjectToRemoveList() (Object.cpp:2140)
    ==7723==    by 0x11B99C5: TempSummon::UnSummon(unsigned int) (TemporarySummon.cpp:256)
    ==7723==  Address 0x3bd20530 is 64 bytes inside a block of size 168 free'd
    ==7723==    at 0x4C2B59C: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==7723==    by 0x1071FD3: Vehicle::~Vehicle() (Vehicle.cpp:66)
    ==7723==    by 0x10B1E71: Unit::RemoveVehicleKit() (Unit.cpp:15947)
    ==7723==    by 0x10A8F32: Unit::RemoveFromWorld() (Unit.cpp:13441)
    ==7723==    by 0x11A4703: Creature::RemoveFromWorld() (Creature.cpp:203)
    ==7723==    by 0x11B9AB7: TempSummon::RemoveFromWorld() (TemporarySummon.cpp:279)
    ==7723==    by 0x11B9C6C: Minion::RemoveFromWorld() (TemporarySummon.cpp:308)
    ==7723==    by 0x10A917C: Unit::CleanupBeforeRemoveFromMap(bool) (Unit.cpp:13482)
    ==7723==    by 0x10A926C: Unit::CleanupsBeforeDelete(bool) (Unit.cpp:13504)
    ==7723==    by 0x12DBB89: Map::AddObjectToRemoveList(WorldObject*) (Map.cpp:2108)
    ==7723==    by 0x10F4556: WorldObject::AddObjectToRemoveList() (Object.cpp:2140)
    ==7723==    by 0x11B99C5: TempSummon::UnSummon(unsigned int) (TemporarySummon.cpp:256)
This commit is contained in:
Shauren committed 2013-10-01 22:06:39 +02:00
1 parent 8aa92ea252
commit 770f69d4e6
1 file changed
+4 -3
+4 -3
View File
@@ -15943,11 +15943,12 @@ void Unit::RemoveVehicleKit()
if (!m_vehicleKit)
return;
m_vehicleKit->Uninstall();
delete m_vehicleKit;
Vehicle* vehicle = m_vehicleKit;
m_vehicleKit = NULL;
vehicle->Uninstall();
delete vehicle;
m_updateFlag &= ~UPDATEFLAG_VEHICLE;
m_unitTypeMask &= ~UNIT_MASK_VEHICLE;
RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);