Changeset - r102:d87f8c51706d
[Not reviewed]
master
0 1 0
dominik - 20 years ago 2004-08-21 22:04:25
dominik@openttd.org
(svn r103) Fix: rare newspaper crash with too many messages [ 1009976 ] (thx to blathij)s
1 file changed with 8 insertions and 1 deletions:
0 comments (0 inline, 0 general)
news_gui.c
Show inline comments
 
@@ -28,7 +28,8 @@ static NewsItem _news_items[MAX_NEWS];
 
static byte _current_news = 255; // points to news item that should be shown next
 
static byte _oldest_news = 0;    // points to first item in fifo queue
 
static byte _latest_news = 255;  // points to last item in fifo queue
 
static byte _forced_news = 255;  // points to a forced-to-be-shown item (255 for none)
 
static byte _forced_news = 255;  // if the message being shown was forced by the user, its index is stored in _forced_news. 
 
																 //forced_news is 255 otherwise. (Users can force messages through history or "last message")
 

	
 
static byte _total_news = 0; // total news count
 

	
 
@@ -37,6 +38,7 @@ void DrawNewsNewRoadVehAvail(Window *w);
 
void DrawNewsNewShipAvail(Window *w);
 
void DrawNewsNewAircraftAvail(Window *w);
 
void DrawNewsBankrupcy(Window *w);
 
static void MoveToNexItem();
 

	
 
StringID GetNewsStringNewTrainAvail(NewsItem *ni);
 
StringID GetNewsStringNewRoadVehAvail(NewsItem *ni);
 
@@ -200,6 +202,10 @@ void AddNewsItem(StringID string, uint32
 
	if (_game_mode == GM_MENU)
 
		return;
 

	
 
	// check the rare case that the oldest (to be overwritten) news item is open
 
	if(_oldest_news == _current_news || _oldest_news == _forced_news)
 
		MoveToNexItem();
 

	
 
	_forced_news = 255;
 
	if(_total_news < MAX_NEWS) _total_news++;
 
	
 
@@ -366,6 +372,7 @@ static bool ReadyForNextItem()
 
static void MoveToNexItem()
 
{
 
	DeleteWindowById(WC_NEWS_WINDOW, 0);
 
	_forced_news = 255;
 

	
 
	// if we're not at the last item, than move on
 
	if(_current_news != _latest_news)
0 comments (0 inline, 0 general)