diff options
author | Darkvater <Darkvater@openttd.org> | 2007-01-14 17:17:30 +0000 |
---|---|---|
committer | Darkvater <Darkvater@openttd.org> | 2007-01-14 17:17:30 +0000 |
commit | 5b191118175a4b09209444408a77cb561569abd0 (patch) | |
tree | a796ed9ec771a54767292c40cc5188e6b67df62d /src | |
parent | 17208a97a9c1fac7cbe4f2e00237f14ec563c0f2 (diff) | |
download | openttd-5b191118175a4b09209444408a77cb561569abd0.tar.xz |
(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
Diffstat (limited to 'src')
-rw-r--r-- | src/openttd.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp index 9223d1d43..10eb7f55e 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -263,9 +263,15 @@ static void InitializeDynamicVariables(void) _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 @@ static void UnInitializeDynamicVariables(void) free((void*)_town_sort); free((void*)_industry_sort); -} - -static void UnInitializeGame(void) -{ - UnInitWindowSystem(); free(_config_file); } @@ -547,18 +548,14 @@ int ttd_main(int argc, char *argv[]) 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; } |