From 5d1ffd76b5845c7305efd295b597cc8ea7da6385 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Thu, 29 Jun 2017 14:44:46 -0400 Subject: [PATCH] Move windows/cheats.c/MONEY_DIGITS to localisation.h/MONEY_STRING_MAXLENGTH --- src/openrct2/localisation/localisation.h | 2 ++ src/openrct2/windows/cheats.c | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/openrct2/localisation/localisation.h b/src/openrct2/localisation/localisation.h index 936196a6e1..b1a3830b26 100644 --- a/src/openrct2/localisation/localisation.h +++ b/src/openrct2/localisation/localisation.h @@ -38,6 +38,8 @@ utf8 *get_string_end(const utf8 *text); size_t get_string_size(const utf8 *text); sint32 get_string_length(const utf8 *text); +// The maximum number of characters allowed for string/money conversions (anything above will risk integer overflow issues) +#define MONEY_STRING_MAXLENGTH 14 money32 string_to_money(char * string_to_monetise); void money_to_string(money32 amount, char * buffer_to_put_value_to, size_t buffer_len); diff --git a/src/openrct2/windows/cheats.c b/src/openrct2/windows/cheats.c index fb5ac0bc24..5a173ee3e5 100644 --- a/src/openrct2/windows/cheats.c +++ b/src/openrct2/windows/cheats.c @@ -36,8 +36,7 @@ #define CHEATS_MONEY_DEFAULT MONEY(5000,00) #define CHEATS_MONEY_INCREMENT_DIV MONEY(1000,00) -#define MONEY_DIGITS 14 -static utf8 _moneySpinnerText[MONEY_DIGITS]; +static utf8 _moneySpinnerText[MONEY_STRING_MAXLENGTH]; static money32 _moneySpinnerValue = CHEATS_MONEY_DEFAULT; enum { @@ -583,8 +582,8 @@ static void window_cheats_money_mouseup(rct_window *w, rct_widgetindex widgetInd game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_NOMONEY, gParkFlags & PARK_FLAGS_NO_MONEY ? 0 : 1, GAME_COMMAND_CHEAT, 0, 0); break; case WIDX_MONEY_SPINNER: - money_to_string(_moneySpinnerValue, _moneySpinnerText, MONEY_DIGITS); - window_text_input_raw_open(w, WIDX_MONEY_SPINNER, STR_ENTER_NEW_VALUE, STR_ENTER_NEW_VALUE, _moneySpinnerText, MONEY_DIGITS); + money_to_string(_moneySpinnerValue, _moneySpinnerText, MONEY_STRING_MAXLENGTH); + window_text_input_raw_open(w, WIDX_MONEY_SPINNER, STR_ENTER_NEW_VALUE, STR_ENTER_NEW_VALUE, _moneySpinnerText, MONEY_STRING_MAXLENGTH); break; case WIDX_SET_MONEY: game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SETMONEY, _moneySpinnerValue, GAME_COMMAND_CHEAT, 0, 0);