From b09743f3e88ea87e0767390a1e6aeb481a7e59e7 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 17 Mar 2013 14:41:09 +0000 Subject: (svn r25093) -Fix [FS#5486]: Clicking the statusbar crashed, when news were pending but no news were shown yet. (3298) --- src/news_gui.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/news_gui.cpp b/src/news_gui.cpp index cb2c79f49..a0c9bdbd2 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -909,8 +909,14 @@ void ShowLastNewsMessage() } else if (_forced_news == NULL) { /* Not forced any news yet, show the current one, unless a news window is * open (which can only be the current one), then show the previous item */ - const Window *w = FindWindowById(WC_NEWS_WINDOW, 0); - ni = (w == NULL || (_current_news == _oldest_news)) ? _current_news : _current_news->prev; + if (_current_news == NULL) { + /* No news were shown yet resp. the last shown one was already deleted. + * Threat this as if _forced_news reached _oldest_news; so, wrap around and start anew with the latest. */ + ni = _latest_news; + } else { + const Window *w = FindWindowById(WC_NEWS_WINDOW, 0); + ni = (w == NULL || (_current_news == _oldest_news)) ? _current_news : _current_news->prev; + } } else if (_forced_news == _oldest_news) { /* We have reached the oldest news, start anew with the latest */ ni = _latest_news; -- cgit v1.2.3-70-g09d2