diff --git a/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp b/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp index e95d33714bc..fee39f690db 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp @@ -2059,13 +2059,13 @@ Parameter *Parameter::ReadParameter(DataChunkInput &file) // quick hack to make loading models with "Fundamentalist" switch to "GLA" if (pParm->m_string.startsWith("Fundamentalist")) { - char oldName[256]; + const char* replacePrefix = "Fundamentalist"; + const size_t offset = pParm->m_string.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, pParm->m_string.str()); strcpy(newName, "GLA"); - strlcat(newName, oldName+strlen("Fundamentalist"), ARRAY_SIZE(newName)); + strlcat(newName, pParm->m_string.str() + offset, ARRAY_SIZE(newName)); + DEBUG_LOG(("Changing Script Ref from %s to %s", pParm->m_string.str(), newName)); pParm->m_string.set(newName); - DEBUG_LOG(("Changing Script Ref from %s to %s", oldName, newName)); } } diff --git a/Generals/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp b/Generals/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp index b47f959dee9..d2f89e964f7 100644 --- a/Generals/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp @@ -422,11 +422,11 @@ void CWorldBuilderDoc::Serialize(CArchive& ar) AsciiString ConvertName(AsciiString name) { - char oldName[256]; + const char* replacePrefix = "Fundamentalist"; + const size_t offset = name.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, name.str()); strcpy(newName, "GLA"); - strlcat(newName, oldName+strlen("Fundamentalist"), ARRAY_SIZE(newName)); + strlcat(newName, name.str() + offset, ARRAY_SIZE(newName)); AsciiString swapName; swapName.set(newName); const ThingTemplate *tt = TheThingFactory->findTemplate(swapName); @@ -438,11 +438,11 @@ AsciiString ConvertName(AsciiString name) AsciiString ConvertFaction(AsciiString name) { - char oldName[256]; + const char* replacePrefix = "FactionFundamentalist"; + const size_t offset = name.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, name.str()); strcpy(newName, "FactionGLA"); - strlcat(newName, oldName+strlen("FactionFundamentalist"), ARRAY_SIZE(newName)); + strlcat(newName, name.str() + offset, ARRAY_SIZE(newName)); AsciiString swapName; swapName.set(newName); const PlayerTemplate* pt = ThePlayerTemplateStore->findPlayerTemplate(NAMEKEY(swapName)); diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp index 2c7057c02e7..b4a63c4ef9b 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/ScriptEngine/Scripts.cpp @@ -2134,13 +2134,13 @@ Parameter *Parameter::ReadParameter(DataChunkInput &file) // quick hack to make loading models with "Fundamentalist" switch to "GLA" if (pParm->m_string.startsWith("Fundamentalist")) { - char oldName[256]; + const char* replacePrefix = "Fundamentalist"; + const size_t offset = pParm->m_string.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, pParm->m_string.str()); strcpy(newName, "GLA"); - strlcat(newName, oldName+strlen("Fundamentalist"), ARRAY_SIZE(newName)); + strlcat(newName, pParm->m_string.str() + offset, ARRAY_SIZE(newName)); + DEBUG_LOG(("Changing Script Ref from %s to %s", pParm->m_string.str(), newName)); pParm->m_string.set(newName); - DEBUG_LOG(("Changing Script Ref from %s to %s", oldName, newName)); } } diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp index 0dc41750737..24442484d8b 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WorldBuilderDoc.cpp @@ -434,10 +434,10 @@ void CWorldBuilderDoc::Serialize(CArchive& ar) AsciiString ConvertToNonGCName(AsciiString name, Bool checkTemplate=true) { - char oldName[256]; + const char* replacePrefix = "GC_"; + const size_t offset = name.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, name.str()); - strcpy(newName, oldName+strlen("GC_")); + strlcpy(newName, name.str() + offset, ARRAY_SIZE(newName)); AsciiString swapName; swapName.set(newName); if (checkTemplate) @@ -453,11 +453,11 @@ AsciiString ConvertToNonGCName(AsciiString name, Bool checkTemplate=true) AsciiString ConvertName(AsciiString name) { - char oldName[256]; + const char* replacePrefix = "Fundamentalist"; + const size_t offset = name.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, name.str()); strcpy(newName, "GLA"); - strlcat(newName, oldName+strlen("Fundamentalist"), ARRAY_SIZE(newName)); + strlcat(newName, name.str() + offset, ARRAY_SIZE(newName)); AsciiString swapName; swapName.set(newName); const ThingTemplate *tt = TheThingFactory->findTemplate(swapName); @@ -469,11 +469,11 @@ AsciiString ConvertName(AsciiString name) AsciiString ConvertFaction(AsciiString name) { - char oldName[256]; + const char* replacePrefix = "FactionFundamentalist"; + const size_t offset = name.startsWith(replacePrefix) ? strlen(replacePrefix) : 0u; char newName[256]; - strcpy(oldName, name.str()); strcpy(newName, "FactionGLA"); - strlcat(newName, oldName+strlen("FactionFundamentalist"), ARRAY_SIZE(newName)); + strlcat(newName, name.str() + offset, ARRAY_SIZE(newName)); AsciiString swapName; swapName.set(newName); const PlayerTemplate* pt = ThePlayerTemplateStore->findPlayerTemplate(NAMEKEY(swapName));