summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDarkvater <Darkvater@openttd.org>2007-01-05 11:41:11 +0000
committerDarkvater <Darkvater@openttd.org>2007-01-05 11:41:11 +0000
commit00558b779de8b8db42ba19e9cc0557ca3d14ff1c (patch)
tree57835683cf2036f7639d2dbdba7623cc66e0b60e /src
parent37abff2c472d07a6e72f89da248148c51798df50 (diff)
downloadopenttd-00558b779de8b8db42ba19e9cc0557ca3d14ff1c.tar.xz
(svn r7861) -Fix (r7823): Crash when oldest news was deleted. First check the index for oldest news
and THEN decrease index, not the other way around.
Diffstat (limited to 'src')
-rw-r--r--src/news_gui.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/news_gui.c b/src/news_gui.c
index 77098744d..677a87765 100644
--- a/src/news_gui.c
+++ b/src/news_gui.c
@@ -912,17 +912,15 @@ void DeleteVehicleNews(VehicleID vid, StringID news)
w = FindWindowById(WC_NEWS_WINDOW, 0);
visible_news = (w != NULL) ? (NewsID)(WP(w, news_d).ni - _news_items) : INVALID_NEWS;
- i = n;
- do {
+ for (i = n;; i = decreaseIndex(i)) {
_news_items[i] = _news_items[decreaseIndex(i)];
if (i == _current_news) _current_news = increaseIndex(_current_news);
if (i == _forced_news) _forced_news = increaseIndex(_forced_news);
if (i == visible_news) WP(w, news_d).ni = &_news_items[increaseIndex(visible_news)];
- i = decreaseIndex(i);
- } while (i != _oldest_news);
-
+ if (i == _oldest_news) break;
+ }
_oldest_news = increaseIndex(_oldest_news);
}