diff --git a/src/client/clientlauncher.cpp b/src/client/clientlauncher.cpp index 93be46d90..52efedc47 100644 --- a/src/client/clientlauncher.cpp +++ b/src/client/clientlauncher.cpp @@ -215,8 +215,9 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args) L" " + utf8_to_wide(g_version_hash) + L" [" + wstrgettext("Main Menu") + L"]").c_str()); - try { // This is used for catching disconnects - +#ifdef NDEBUG + try { +#endif m_rendering_engine->get_gui_env()->clear(); /* @@ -267,14 +268,8 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args) chat_backend, &reconnect_requested ); - } //try - catch (con::PeerNotFoundException &e) { - error_message = gettext("Connection error (timed out?)"); - errorstream << error_message << std::endl; - } - #ifdef NDEBUG - catch (std::exception &e) { + } catch (std::exception &e) { error_message = "Some exception: "; error_message.append(debug_describe_exc(e)); errorstream << error_message << std::endl; diff --git a/src/client/game.cpp b/src/client/game.cpp index 914ddc327..244ae848e 100644 --- a/src/client/game.cpp +++ b/src/client/game.cpp @@ -1057,6 +1057,12 @@ Game::Game() : Game::~Game() { + delete client; + delete soundmaker; + sound_manager.reset(); + + delete server; + delete hud; delete camera; delete quicktune; @@ -1311,11 +1317,14 @@ void Game::shutdown() } delete client; + client = nullptr; delete soundmaker; + soundmaker = nullptr; sound_manager.reset(); auto stop_thread = runInThread([=] { delete server; + server = nullptr; }, "ServerStop"); FpsControl fps_control; @@ -4611,6 +4620,10 @@ void the_game(bool *kill, error_message = std::string("ModError: ") + e.what() + strgettext("\nCheck debug.txt for details."); errorstream << error_message << std::endl; + } catch (con::PeerNotFoundException &e) { + error_message = gettext("Connection error (timed out?)"); + errorstream << error_message << std::endl; } + game.shutdown(); }