mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 00:34:27 +00:00
Fix #7255: Prevent crashlog corruption by only printing the 32 most recent news messages
This commit is contained in:
parent
9e19a5f93e
commit
47d0d86a3c
@ -303,7 +303,7 @@ char *CrashLog::LogGamelog(char *buffer, const char *last) const
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes any recent news messages to the buffer.
|
||||
* Writes up to 32 recent news messages to the buffer, with the most recent first.
|
||||
* @param buffer The begin where to write at.
|
||||
* @param last The last position in the buffer to write to.
|
||||
* @return the position of the \c '\0' character after the buffer.
|
||||
@ -312,7 +312,8 @@ char *CrashLog::LogRecentNews(char *buffer, const char *last) const
|
||||
{
|
||||
buffer += seprintf(buffer, last, "Recent news messages:\n");
|
||||
|
||||
for (NewsItem *news = _oldest_news; news != nullptr; news = news->next) {
|
||||
int i = 0;
|
||||
for (NewsItem *news = _latest_news; i < 32 && news != nullptr; news = news->prev, i++) {
|
||||
YearMonthDay ymd;
|
||||
ConvertDateToYMD(news->date, &ymd);
|
||||
buffer += seprintf(buffer, last, "(%i-%02i-%02i) StringID: %u, Type: %u, Ref1: %u, %u, Ref2: %u, %u\n",
|
||||
|
@ -43,10 +43,10 @@
|
||||
|
||||
const NewsItem *_statusbar_news_item = nullptr;
|
||||
|
||||
static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages
|
||||
static uint _total_news = 0; ///< current number of news items
|
||||
NewsItem *_oldest_news = nullptr; ///< head of news items queue
|
||||
static NewsItem *_latest_news = nullptr; ///< tail of news items queue
|
||||
static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages
|
||||
static uint _total_news = 0; ///< current number of news items
|
||||
static NewsItem *_oldest_news = nullptr; ///< head of news items queue
|
||||
NewsItem *_latest_news = nullptr; ///< tail of news items queue
|
||||
|
||||
/**
|
||||
* Forced news item.
|
||||
@ -54,7 +54,7 @@ static NewsItem *_latest_news = nullptr; ///< tail of news items queue
|
||||
* If the message being shown was forced by the user, a pointer is stored
|
||||
* in _forced_news. Otherwise, \a _forced_news variable is nullptr.
|
||||
*/
|
||||
static const NewsItem *_forced_news = nullptr; ///< item the user has asked for
|
||||
static const NewsItem *_forced_news = nullptr;
|
||||
|
||||
/** Current news item (last item shown regularly). */
|
||||
static const NewsItem *_current_news = nullptr;
|
||||
|
@ -17,6 +17,6 @@
|
||||
void ShowLastNewsMessage();
|
||||
void ShowMessageHistory();
|
||||
|
||||
extern NewsItem *_oldest_news;
|
||||
extern NewsItem *_latest_news;
|
||||
|
||||
#endif /* NEWS_GUI_H */
|
||||
|
Loading…
Reference in New Issue
Block a user