replace Server smart pointer with conventional one to gain control over dtor call order

This commit is contained in:
sapier 2013-04-07 19:41:12 +02:00 committed by kwolekr
parent 2bdff11d54
commit cd27c8ef5d
2 changed files with 19 additions and 13 deletions

@ -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;

@ -1902,16 +1902,6 @@ int main(int argc, char *argv[])
error_message = wgettext("Connection error (timed out?)");
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.");
}
#ifdef NDEBUG
catch(std::exception &e)
{