(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
This commit is contained in:
Darkvater 2007-01-14 17:17:30 +00:00
parent 468f53911d
commit 54b88bc8e6

View File

@ -263,9 +263,15 @@ static void InitializeDynamicVariables(void)
_industry_sort = NULL; _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(&_Town_pool);
CleanPool(&_Industry_pool); CleanPool(&_Industry_pool);
CleanPool(&_Station_pool); CleanPool(&_Station_pool);
@ -275,11 +281,6 @@ static void UnInitializeDynamicVariables(void)
free((void*)_town_sort); free((void*)_town_sort);
free((void*)_industry_sort); free((void*)_industry_sort);
}
static void UnInitializeGame(void)
{
UnInitWindowSystem();
free(_config_file); free(_config_file);
} }
@ -547,18 +548,14 @@ int ttd_main(int argc, char *argv[])
SaveToHighScore(); SaveToHighScore();
} }
// uninitialize airport state machines /* Reset windowing system and free config file */
UnInitializeAirports(); UnInitializeGame();
/* uninitialize variables that are allocated dynamic */
UnInitializeDynamicVariables();
/* stop the AI */ /* stop the AI */
AI_Uninitialize(); AI_Uninitialize();
/* Close all and any open filehandles */ /* Close all and any open filehandles */
FioCloseAll(); FioCloseAll();
UnInitializeGame();
return 0; return 0;
} }