From 7e279d37cdabbf4009e9c48d6ac0e9dd09a534b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= Date: Sat, 9 Nov 2019 21:26:14 +0100 Subject: [PATCH] Fix out of bounds access opening the in-game console at startup (#10197) --- src/openrct2-ui/interface/InGameConsole.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/openrct2-ui/interface/InGameConsole.cpp b/src/openrct2-ui/interface/InGameConsole.cpp index 81ee2d3780..044d20c685 100644 --- a/src/openrct2-ui/interface/InGameConsole.cpp +++ b/src/openrct2-ui/interface/InGameConsole.cpp @@ -127,7 +127,11 @@ void InGameConsole::HistoryAdd(const utf8* src) void InGameConsole::ScrollToEnd() { - _consoleScrollPos = std::max(0, (int32_t)_consoleLines.size() - GetNumVisibleLines()); + const int32_t maxLines = GetNumVisibleLines(); + if (maxLines == 0) + _consoleScrollPos = 0; + else + _consoleScrollPos = std::max(0, (int32_t)_consoleLines.size() - maxLines); } void InGameConsole::RefreshCaret() @@ -349,6 +353,8 @@ int32_t InGameConsole::GetNumVisibleLines() const { const int32_t lineHeight = font_get_line_height(gCurrentFontSpriteBase); const int32_t consoleHeight = _consoleBottom - _consoleTop; + if (consoleHeight == 0) + return 0; const int32_t drawableHeight = consoleHeight - 2 * lineHeight - 4; // input line, separator - padding return drawableHeight / lineHeight; }