From bbcc69270d279420eebfc3b96d44ca03c81c5287 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Wed, 15 May 2019 21:09:01 +0200 Subject: [PATCH] Ensure finances window's months don't overflow (#8686) Some functions (e.g. window_finances_summary_scrollpaint) will try using the returned index, which makes it overflow. --- src/openrct2-ui/windows/Finances.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/openrct2-ui/windows/Finances.cpp b/src/openrct2-ui/windows/Finances.cpp index 1322bb54e0..3c6ce80dd2 100644 --- a/src/openrct2-ui/windows/Finances.cpp +++ b/src/openrct2-ui/windows/Finances.cpp @@ -611,14 +611,14 @@ static void window_finances_summary_mousedown(rct_window* w, rct_widgetindex wid } } -static uint16_t summary_num_months_available() +static uint16_t summary_max_available_month() { - return std::min(gDateMonthsElapsed, EXPENDITURE_TABLE_MONTH_COUNT); + return std::min(gDateMonthsElapsed, EXPENDITURE_TABLE_MONTH_COUNT - 1); } static void window_finances_summary_scrollgetsize(rct_window* w, int32_t scrollIndex, int32_t* width, int32_t* height) { - *width = EXPENDITURE_COLUMN_WIDTH * (summary_num_months_available() + 1); + *width = EXPENDITURE_COLUMN_WIDTH * (summary_max_available_month() + 1); } static void window_finances_summary_invertscroll(rct_window* w) @@ -737,7 +737,7 @@ static void window_finances_summary_scrollpaint(rct_window* w, rct_drawpixelinfo // Expenditure / Income values for each month int16_t currentMonthYear = gDateMonthsElapsed; - for (int32_t i = summary_num_months_available(); i >= 0; i--) + for (int32_t i = summary_max_available_month(); i >= 0; i--) { y = 0;