From 507b2fbcaceda76607525a7ce6ecfbe9a1d97864 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 1 Oct 2023 07:52:38 -0700 Subject: [PATCH] fix disconnect when viewing Ep3 team info with missing player --- src/SendCommands.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/SendCommands.cc b/src/SendCommands.cc index b72269c3..3c818234 100644 --- a/src/SendCommands.cc +++ b/src/SendCommands.cc @@ -2442,9 +2442,14 @@ void send_ep3_game_details(shared_ptr c, shared_ptr l) { auto& entry = team_entry.players[z]; const auto& player = team->players[z]; if (player.is_human()) { - auto c = serial_number_to_client.at(player.serial_number); - entry.name = c->game_data.player()->disp.name; - entry.description = ep3_description_for_client(c); + try { + auto c = serial_number_to_client.at(player.serial_number); + entry.name = c->game_data.player()->disp.name; + entry.description = ep3_description_for_client(c); + } catch (const out_of_range&) { + entry.name = player.player_name; + entry.description = "(Not connected)"; + } } else { entry.name = player.com_deck->player_name; entry.description = "Deck: " + player.com_deck->deck_name; @@ -2595,7 +2600,11 @@ void send_ep3_tournament_match_result(shared_ptr l, uint32_t meseta_rewar for (size_t z = 0; z < team->players.size(); z++) { const auto& player = team->players[z]; if (player.is_human()) { - entry.player_names[z] = serial_number_to_client.at(player.serial_number)->game_data.player()->disp.name; + try { + entry.player_names[z] = serial_number_to_client.at(player.serial_number)->game_data.player()->disp.name; + } catch (const out_of_range&) { + entry.player_names[z] = player.player_name; + } } else { entry.player_names[z] = player.com_deck->player_name; }