From cd120f51186c61e80cb1d54aaaf5ce6ed79f9c8d Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Mon, 8 Feb 2021 10:38:40 +1100 Subject: [PATCH] MP Manager: avoid setting singleton ptr until connection is established --- src/game_initialization/multiplayer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/game_initialization/multiplayer.cpp b/src/game_initialization/multiplayer.cpp index 3fdfc7ab537a..df3ea7825cca 100644 --- a/src/game_initialization/multiplayer.cpp +++ b/src/game_initialization/multiplayer.cpp @@ -160,9 +160,6 @@ mp_manager::mp_manager(const std::optional host) , state() , lobby_info(::installed_addons()) { - assert(!manager); - manager = this; - state.classification().campaign_type = game_classification::CAMPAIGN_TYPE::MULTIPLAYER; if(host) { @@ -214,6 +211,11 @@ mp_manager::mp_manager(const std::optional host) received_initial_gamelist.get_future().wait(); }); } + + // Avoid setting this until the connection has been fully established. open_connection may throw, + // in which case we don't want to point to an object instance that has not properly connected. + assert(!manager); + manager = this; } std::unique_ptr mp_manager::open_connection(std::string host)