Fix #8129: Crash if a news message expires while viewing the endgame screen

This commit is contained in:
Charles Pigott 2020-06-27 14:14:21 +01:00
parent dc8d0089e9
commit 4c45448fa9

View File

@ -671,6 +671,11 @@ static bool ReadyForNextNewsItem()
/** Move to the next ticker item */ /** Move to the next ticker item */
static void MoveToNextTickerItem() static void MoveToNextTickerItem()
{ {
/* There is no status bar, so no reason to show news;
* especially important with the end game screen when
* there is no status bar but possible news. */
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar InvalidateWindowData(WC_STATUS_BAR, 0, SBI_NEWS_DELETED); // invalidate the statusbar
/* if we're not at the last item, then move on */ /* if we're not at the last item, then move on */
@ -702,6 +707,11 @@ static void MoveToNextTickerItem()
/** Move to the next news item */ /** Move to the next news item */
static void MoveToNextNewsItem() static void MoveToNextNewsItem()
{ {
/* There is no status bar, so no reason to show news;
* especially important with the end game screen when
* there is no status bar but possible news. */
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
DeleteWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown DeleteWindowById(WC_NEWS_WINDOW, 0); // close the newspapers window if shown
_forced_news = nullptr; _forced_news = nullptr;
@ -995,11 +1005,6 @@ void NewsLoop()
/* no news item yet */ /* no news item yet */
if (_total_news == 0) return; if (_total_news == 0) return;
/* There is no status bar, so no reason to show news;
* especially important with the end game screen when
* there is no status bar but possible news. */
if (FindWindowById(WC_STATUS_BAR, 0) == nullptr) return;
static byte _last_clean_month = 0; static byte _last_clean_month = 0;
if (_last_clean_month != _cur_month) { if (_last_clean_month != _cur_month) {