From cc1b0806c9d389aa65bfcef843d9f771a1b0dd89 Mon Sep 17 00:00:00 2001 From: Benau Date: Wed, 10 Apr 2019 10:16:23 +0800 Subject: [PATCH] Handle if server has different graph node list --- src/tracks/track_sector.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/tracks/track_sector.cpp b/src/tracks/track_sector.cpp index 3dfa0c572..54d8cde18 100644 --- a/src/tracks/track_sector.cpp +++ b/src/tracks/track_sector.cpp @@ -211,9 +211,27 @@ void TrackSector::saveCompleteState(BareNetworkString* bns) // ---------------------------------------------------------------------------- void TrackSector::restoreCompleteState(const BareNetworkString& b) { + const int max_node = Graph::get()->getNumNodes(); m_current_graph_node = b.getUInt32(); + if (m_current_graph_node >= max_node) + { + Log::warn("TrackSector", "Server has different graph node list."); + // 0 so that if any function is called before update track sector + // again it will have at least a valid node + m_current_graph_node = 0; + } m_estimated_valid_graph_node = b.getUInt32(); + if (m_estimated_valid_graph_node >= max_node) + { + Log::warn("TrackSector", "Server has different graph node list."); + m_estimated_valid_graph_node = 0; + } m_last_valid_graph_node = b.getUInt32(); + if (m_last_valid_graph_node >= max_node) + { + Log::warn("TrackSector", "Server has different graph node list."); + m_last_valid_graph_node = 0; + } m_current_track_coords = b.getVec3(); m_estimated_valid_track_coords = b.getVec3(); m_latest_valid_track_coords = b.getVec3();