mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	replace Server smart pointer with conventional one to gain control over dtor call order
This commit is contained in:
		
							
								
								
									
										22
									
								
								src/game.cpp
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/main.cpp
									
									
									
									
									
								
							@@ -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)
 | 
			
		||||
		{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user