From 16aeb84cd35996a6b41f10cbc48a677eeccc911c Mon Sep 17 00:00:00 2001 From: Tiger Wang Date: Sat, 2 Jan 2021 13:50:34 +0000 Subject: Fix potential destruction crashes (#5095) * Fix potential destruction crashes * Fix destructors accessing destroyted objects * Fix cPlayer not destroying windows (Destroyed never called) * Tentatively fixes #4608, fixes #3236, fixes #3262 - Remove cEntity::Destroyed() and replace with cEntity::OnRemoveFromWorld() * Add missing call to OnRemoveFromWorld --- src/Mobs/Horse.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'src/Mobs/Horse.cpp') diff --git a/src/Mobs/Horse.cpp b/src/Mobs/Horse.cpp index e42241700..d3ba066cc 100644 --- a/src/Mobs/Horse.cpp +++ b/src/Mobs/Horse.cpp @@ -32,19 +32,6 @@ cHorse::cHorse(int Type, int Color, int Style, int TameTimes) : -cHorse::~cHorse() -{ - auto Window = GetWindow(); - if (Window != nullptr) - { - Window->OwnerDestroyed(); - } -} - - - - - void cHorse::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) { Super::Tick(a_Dt, a_Chunk); @@ -123,6 +110,21 @@ void cHorse::Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) +void cHorse::OnRemoveFromWorld(cWorld & a_World) +{ + const auto Window = GetWindow(); + if (Window != nullptr) + { + Window->OwnerDestroyed(); + } + + Super::OnRemoveFromWorld(a_World); +} + + + + + void cHorse::OnRightClicked(cPlayer & a_Player) { Super::OnRightClicked(a_Player); -- cgit v1.2.3