# HG changeset patch # User Rubidium # Date 2023-07-05 17:36:35 # Node ID 082d9bc39af41b6fe5066b66887fa896295489d0 # Parent bb05e5a96ac9088a8896c74bfaa33634363ff438 Codechange: do not make a string valid in place, to then copy it diff --git a/src/newgrf.cpp b/src/newgrf.cpp --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -2651,12 +2651,9 @@ static ChangeInfoResult LoadTranslationT */ static std::string ReadDWordAsString(ByteReader *reader) { - char output[5]; - for (int i = 0; i < 4; i++) output[i] = reader->ReadByte(); - output[4] = '\0'; - StrMakeValidInPlace(output, lastof(output)); - - return std::string(output); + std::string output; + for (int i = 0; i < 4; i++) output.push_back(reader->ReadByte()); + return StrMakeValid(output); } /** diff --git a/src/saveload/gamelog_sl.cpp b/src/saveload/gamelog_sl.cpp --- a/src/saveload/gamelog_sl.cpp +++ b/src/saveload/gamelog_sl.cpp @@ -68,8 +68,7 @@ public: SlObject(lc, this->GetLoadDescription()); if (IsSavegameVersionBefore(SLV_STRING_GAMELOG)) { - StrMakeValidInPlace(SlGamelogRevision::revision_text, lastof(SlGamelogRevision::revision_text)); - static_cast(lc)->text = SlGamelogRevision::revision_text; + static_cast(lc)->text = StrMakeValid(std::string_view(SlGamelogRevision::revision_text, lengthof(SlGamelogRevision::revision_text))); } } diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -573,8 +573,7 @@ bool ScriptInstance::IsPaused() SlObject(nullptr, _script_byte); static char buf[std::numeric_limits::max()]; SlCopy(buf, _script_sl_byte, SLE_CHAR); - StrMakeValidInPlace(buf, buf + _script_sl_byte); - if (data != nullptr) data->push_back(std::string(buf)); + if (data != nullptr) data->push_back(StrMakeValid(std::string_view(buf, _script_sl_byte))); return true; }