summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 65feb50bf..4f6eb472d 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -992,6 +992,9 @@ void the_game(
sound_is_dummy = true;
}
+ Server *server = NULL;
+
+ try{
// Event manager
EventManager eventmgr;
@@ -1007,9 +1010,8 @@ void the_game(
/*
Create server.
- SharedPtr will delete it when it goes out of scope.
*/
- SharedPtr<Server> server;
+
if(address == ""){
draw_load_screen(L"Creating server...", driver, font);
infostream<<"Creating server"<<std::endl;
@@ -1018,7 +1020,6 @@ void the_game(
server->start(port);
}
- try{
do{ // Client scope (breakable do-while(0))
/*
@@ -3290,10 +3291,25 @@ void the_game(
L" running a different version of Minetest.";
errorstream<<wide_to_narrow(error_message)<<std::endl;
}
+ catch(ServerError &e)
+ {
+ error_message = narrow_to_wide(e.what());
+ errorstream<<wide_to_narrow(error_message)<<std::endl;
+ }
+ catch(ModError &e)
+ {
+ errorstream<<e.what()<<std::endl;
+ error_message = narrow_to_wide(e.what()) + wgettext("\nCheck debug.txt for details.");
+ }
+
+
if(!sound_is_dummy)
delete sound;
+ //has to be deleted first to stop all server threads
+ delete server;
+
delete tsrc;
delete shsrc;
delete nodedef;