Fix: use reference and array indexing to prevent suspicious pointer scaling

This commit is contained in:
Rubidium 2023-01-02 23:17:24 +01:00 committed by rubidium42
parent fbd0f5ad7d
commit 496ec1f012

View File

@ -227,7 +227,7 @@ static void DrawPrice(Money amount, int left, int right, int top, TextColour col
* Draw a category of expenses/revenues in the year column. * Draw a category of expenses/revenues in the year column.
* @return The income sum of the category. * @return The income sum of the category.
*/ */
static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, const Money(*tbl)[EXPENSES_END]) static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, const Money(&tbl)[EXPENSES_END])
{ {
int y = start_y; int y = start_y;
ExpensesType et; ExpensesType et;
@ -235,7 +235,7 @@ static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, co
for (uint i = 0; i < list.length; i++) { for (uint i = 0; i < list.length; i++) {
et = list.et[i]; et = list.et[i];
Money cost = (*tbl)[et]; Money cost = tbl[et];
sum += cost; sum += cost;
if (cost != 0) DrawPrice(cost, r.left, r.right, y, TC_BLACK); if (cost != 0) DrawPrice(cost, r.left, r.right, y, TC_BLACK);
y += FONT_HEIGHT_NORMAL; y += FONT_HEIGHT_NORMAL;
@ -255,10 +255,10 @@ static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, co
* Draw a column with prices. * Draw a column with prices.
* @param r Available space for drawing. * @param r Available space for drawing.
* @param year Year being drawn. * @param year Year being drawn.
* @param tbl Pointer to table of amounts for \a year. * @param tbl Reference to table of amounts for \a year.
* @note The environment must provide padding at the left and right of \a r. * @note The environment must provide padding at the left and right of \a r.
*/ */
static void DrawYearColumn(const Rect &r, int year, const Money (*tbl)[EXPENSES_END]) static void DrawYearColumn(const Rect &r, int year, const Money (&tbl)[EXPENSES_END])
{ {
int y = r.top; int y = r.top;
Money sum; Money sum;
@ -435,7 +435,7 @@ struct CompanyFinancesWindow : Window {
int age = std::min(_cur_year - c->inaugurated_year, 2); int age = std::min(_cur_year - c->inaugurated_year, 2);
int wid_offset = widget - WID_CF_EXPS_PRICE1; int wid_offset = widget - WID_CF_EXPS_PRICE1;
if (wid_offset <= age) { if (wid_offset <= age) {
DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses + (age - wid_offset)); DrawYearColumn(r, _cur_year - (age - wid_offset), c->yearly_expenses[age - wid_offset]);
} }
break; break;
} }