From 8950354e62ab7bad998d34d4b711e3e947b9556f Mon Sep 17 00:00:00 2001 From: Benau Date: Fri, 28 Sep 2018 14:40:37 +0800 Subject: [PATCH] Avoid using deleted end controller when rewind --- src/karts/kart.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/karts/kart.cpp b/src/karts/kart.cpp index 33a533ae8..f9a26fa12 100644 --- a/src/karts/kart.cpp +++ b/src/karts/kart.cpp @@ -951,10 +951,16 @@ void Kart::finishedRace(float time, bool from_server) World::getWorld()->getTicksSinceStart(), /*undo_function*/[old_controller, this]() { + if (m_network_finish_check_ticks == -1) + return; + m_controller = old_controller; }, /*replay_function*/[ec, old_controller, this]() { + if (m_network_finish_check_ticks == -1) + return; + m_saved_controller = old_controller; ec->reset(); m_controller = ec; @@ -1319,13 +1325,13 @@ void Kart::eliminate() */ void Kart::update(int ticks) { - if (m_network_finish_check_ticks != 0 && + if (m_network_finish_check_ticks > 0 && World::getWorld()->getTicksSinceStart() > m_network_finish_check_ticks && !m_finished_race && m_saved_controller != NULL) { Log::warn("Kart", "Missing finish race from server."); - m_network_finish_check_ticks = 0; + m_network_finish_check_ticks = -1; delete m_controller; m_controller = m_saved_controller; m_saved_controller = NULL;