diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index f82b807c62..3ef613824f 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -345,7 +345,7 @@ class NetworkContentListWindow : public Window, ContentCallback { uint filesize_sum; ///< The sum of all selected file sizes Scrollbar *vscroll; ///< Cache of the vertical scrollbar - static char content_type_strs[CONTENT_TYPE_END][64]; ///< Cached strings for all content types. + static std::string content_type_strs[CONTENT_TYPE_END]; ///< Cached strings for all content types. /** Search external websites for content */ void OpenExternalSearch() @@ -1019,7 +1019,7 @@ NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentL &TypeOrSelectedFilter, }; -char NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END][64]; +std::string NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END]; /** * Build array of all strings corresponding to the content types. @@ -1027,7 +1027,7 @@ char NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END][64]; void BuildContentTypeStringList() { for (int i = CONTENT_TYPE_BEGIN; i < CONTENT_TYPE_END; i++) { - GetString(NetworkContentListWindow::content_type_strs[i], STR_CONTENT_TYPE_BASE_GRAPHICS + i - CONTENT_TYPE_BASE_GRAPHICS, lastof(NetworkContentListWindow::content_type_strs[i])); + NetworkContentListWindow::content_type_strs[i] = GetString(STR_CONTENT_TYPE_BASE_GRAPHICS + i - CONTENT_TYPE_BASE_GRAPHICS); } } diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index bccae4f1bd..86f45bfd16 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -510,9 +510,7 @@ struct NewGRFInspectWindow : Window { NOT_REACHED(); } - char buffer[64]; - GetString(buffer, string, lastof(buffer)); - this->DrawString(r, i++, fmt::format(" {:02x}: {} ({})", nip->prop, buffer, nip->name)); + this->DrawString(r, i++, fmt::format(" {:02x}: {} ({})", nip->prop, GetString(string), nip->name)); } } diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 109a958016..cec827f300 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -71,14 +71,13 @@ static void ShowNewGRFInfo(const GRFConfig *c, const Rect &r, bool show_params) { Rect tr = r.Shrink(WidgetDimensions::scaled.frametext); if (c->error != nullptr) { - char message[512]; SetDParamStr(0, c->error->custom_message); // is skipped by built-in messages SetDParamStr(1, c->filename); SetDParamStr(2, c->error->data); for (uint i = 0; i < c->error->param_value.size(); i++) { SetDParam(3 + i, c->error->param_value[i]); } - GetString(message, c->error->message != STR_NULL ? c->error->message : STR_JUST_RAW_STRING, lastof(message)); + std::string message = GetString(c->error->message != STR_NULL ? c->error->message : STR_JUST_RAW_STRING); SetDParamStr(0, message); tr.top = DrawStringMultiLine(tr, c->error->severity); diff --git a/src/osk_gui.cpp b/src/osk_gui.cpp index 307cc4f793..3b8e963bb5 100644 --- a/src/osk_gui.cpp +++ b/src/osk_gui.cpp @@ -347,27 +347,18 @@ static WindowDesc _osk_desc( */ void GetKeyboardLayout() { - char keyboard[2][OSK_KEYBOARD_ENTRIES * 4 + 1]; - char errormark[2][OSK_KEYBOARD_ENTRIES + 1]; // used for marking invalid chars + std::string keyboard[2]; + std::string errormark[2]; // used for marking invalid chars bool has_error = false; // true when an invalid char is detected - if (_keyboard_opt[0].empty()) { - GetString(keyboard[0], STR_OSK_KEYBOARD_LAYOUT, lastof(keyboard[0])); - } else { - strecpy(keyboard[0], _keyboard_opt[0].c_str(), lastof(keyboard[0])); - } - - if (_keyboard_opt[1].empty()) { - GetString(keyboard[1], STR_OSK_KEYBOARD_LAYOUT_CAPS, lastof(keyboard[1])); - } else { - strecpy(keyboard[1], _keyboard_opt[1].c_str(), lastof(keyboard[1])); - } + keyboard[0] = _keyboard_opt[0].empty() ? GetString(STR_OSK_KEYBOARD_LAYOUT) : _keyboard_opt[0]; + keyboard[1] = _keyboard_opt[1].empty() ? GetString(STR_OSK_KEYBOARD_LAYOUT_CAPS) : _keyboard_opt[1]; for (uint j = 0; j < 2; j++) { - const char *kbd = keyboard[j]; + auto kbd = keyboard[j].begin(); bool ended = false; for (uint i = 0; i < OSK_KEYBOARD_ENTRIES; i++) { - _keyboard[j][i] = Utf8Consume(&kbd); + _keyboard[j][i] = Utf8Consume(kbd); /* Be lenient when the last characters are missing (is quite normal) */ if (_keyboard[j][i] == '\0' || ended) { @@ -377,10 +368,10 @@ void GetKeyboardLayout() } if (IsPrintable(_keyboard[j][i])) { - errormark[j][i] = ' '; + errormark[j] += ' '; } else { has_error = true; - errormark[j][i] = '^'; + errormark[j] += '^'; _keyboard[j][i] = ' '; } } diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index abe61ac247..b2b626386f 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -2792,9 +2792,9 @@ const char *GetSaveLoadErrorString() SetDParam(0, _sl.error_str); SetDParamStr(1, _sl.extra_msg); - static char err_str[512]; - GetString(err_str, _sl.action == SLA_SAVE ? STR_ERROR_GAME_SAVE_FAILED : STR_ERROR_GAME_LOAD_FAILED, lastof(err_str)); - return err_str; + static std::string err_str; + err_str = GetString(_sl.action == SLA_SAVE ? STR_ERROR_GAME_SAVE_FAILED : STR_ERROR_GAME_LOAD_FAILED); + return err_str.c_str(); } /** Show a gui message when saving has failed */