From 71dfec9fdbbfb2bcb09487240c0b37fc335f8189 Mon Sep 17 00:00:00 2001 From: kreatordxx <> Date: Sat, 27 Mar 2010 03:24:14 +0000 Subject: [PATCH] Hide mission dialog before the level intro screens are shown, make sure it doesn't try to show it again after it was closed - fixing bad memory access --- CHANGELOG.txt | 1 + main/gameseq.c | 2 ++ main/menu.c | 8 +++++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 7edd6efac..58613ee51 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ D1X-Rebirth Changelog 20100327 -------- main/kmatrix.c, main/net_udp.c: Initialise 'playing' to 0 for UDP kmatrix, making sure player progresses to next level; always return 1 when starting to join a UDP game so it doesn't immediately return to the main menu +main/gameseq.c, main/menu.c: Hide mission dialog before the level intro screens are shown, make sure it doesn't try to show it again after it was closed - fixing bad memory access 20100326 -------- diff --git a/main/gameseq.c b/main/gameseq.c index 3f5481326..c7578fb3e 100644 --- a/main/gameseq.c +++ b/main/gameseq.c @@ -1274,6 +1274,8 @@ void StartNewLevelSub(int level_num, int page_in_textures) //called when the player is starting a new level for normal game model void StartNewLevel(int level_num) { + hide_menus(); + GameTime = FrameTime; load_custom_data(get_level_file(level_num)); diff --git a/main/menu.c b/main/menu.c index a0fb5803b..488629574 100644 --- a/main/menu.c +++ b/main/menu.c @@ -131,6 +131,9 @@ void hide_menus(void) window *wind; int i; + if (menus[i]) + return; // there are already hidden menus + for (i = 0; (i < 15) && (wind = window_get_front()); i++) { menus[i] = wind; @@ -148,7 +151,10 @@ void show_menus(void) int i; for (i = 0; (i < 16) && menus[i]; i++) - window_set_visible(menus[i], 1); + if (window_exists(menus[i])) + window_set_visible(menus[i], 1); + + menus[0] = NULL; } //pairs of chars describing ranges