(svn r8119) -Fix (r8101): Uninitializing windows should be called before freeing dynamic variables as windows could use those variables during cleanup (eg WE_DESTROY calling GetStation(w->window_number).
authorDarkvater
Sun, 14 Jan 2007 17:17:30 +0000
changeset 5659 573700347887
parent 5658 1e8be78c0bd7
child 5660 1425b81374b8
(svn r8119) -Fix (r8101): Uninitializing windows should be called before freeing dynamic variables as windows could use those variables during cleanup (eg WE_DESTROY calling GetStation(w->window_number).
-Merged UnInitializeGame with UnInitializeAirports and UnInitializeDynamicVariables
src/openttd.cpp
--- a/src/openttd.cpp	Sun Jan 14 16:44:52 2007 +0000
+++ b/src/openttd.cpp	Sun Jan 14 17:17:30 2007 +0000
@@ -263,9 +263,15 @@
 	_industry_sort = NULL;
 }
 
-static void UnInitializeDynamicVariables(void)
+
+static void UnInitializeGame(void)
 {
-	/* Dynamic stuff needs to be free'd somewhere... */
+	UnInitWindowSystem();
+
+	/* Uninitialize airport state machines */
+	UnInitializeAirports();
+
+	/* Uninitialize variables that are allocated dynamically */
 	CleanPool(&_Town_pool);
 	CleanPool(&_Industry_pool);
 	CleanPool(&_Station_pool);
@@ -275,11 +281,6 @@
 
 	free((void*)_town_sort);
 	free((void*)_industry_sort);
-}
-
-static void UnInitializeGame(void)
-{
-	UnInitWindowSystem();
 
 	free(_config_file);
 }
@@ -547,18 +548,14 @@
 		SaveToHighScore();
 	}
 
-	// uninitialize airport state machines
-	UnInitializeAirports();
-
-	/* uninitialize variables that are allocated dynamic */
-	UnInitializeDynamicVariables();
+	/* Reset windowing system and free config file */
+	UnInitializeGame();
 
 	/* stop the AI */
 	AI_Uninitialize();
 
 	/* Close all and any open filehandles */
 	FioCloseAll();
-	UnInitializeGame();
 
 	return 0;
 }