From 696bcea99817ae14ec91a1f2fab71c7915377d3b Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Wed, 29 Oct 2025 14:52:34 -0400 Subject: [PATCH 1/4] refactor: Eliminate redundant buffer copies --- .../Source/WWVegas/WW3D2/hmdldef.cpp | 6 +++--- .../Code/Tools/WorldBuilder/src/OpenMap.cpp | 20 +++++++------------ .../Code/Tools/WorldBuilder/src/SaveMap.cpp | 17 ++++++---------- .../Tools/WorldBuilder/src/WHeightMapEdit.cpp | 10 +++------- .../Code/Tools/WorldBuilder/src/OpenMap.cpp | 20 +++++++------------ .../Code/Tools/WorldBuilder/src/SaveMap.cpp | 17 ++++++---------- .../Tools/WorldBuilder/src/WHeightMapEdit.cpp | 9 +++------ 7 files changed, 35 insertions(+), 64 deletions(-) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp b/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp index 988b91c493d..ddd54d83146 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp @@ -148,9 +148,9 @@ int HModelDefClass::Load_W3D(ChunkLoadClass & cload) /* ** process the header info */ - strlcpy(ModelName,header.Name,W3D_NAME_LEN); - strlcpy(BasePoseName,header.HierarchyName,W3D_NAME_LEN); - strcpy(Name,ModelName); + strlcpy(ModelName,header.Name,W3D_NAME_LEN); + strlcpy(BasePoseName,header.HierarchyName,W3D_NAME_LEN); + strcpy(Name,ModelName); /* ** Just allocate a node for the number of sub objects we're expecting diff --git a/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp b/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp index 8417ad50fc3..a31d38f614d 100644 --- a/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp @@ -115,11 +115,10 @@ void OpenMap::populateMapListbox( Bool systemMaps ) char fileBuf[_MAX_PATH]; if (systemMaps) - strcpy(dirBuf, "Maps\\"); + strlcpy(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf)); else { - strcpy(dirBuf, TheGlobalData->getPath_UserData().str()); - strlcat(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf)); + snprintf(dirBuf, ARRAY_SIZE(dirBuf), "%sMaps\\", TheGlobalData->getPath_UserData().str()); } int len = strlen(dirBuf); @@ -131,8 +130,7 @@ void OpenMap::populateMapListbox( Bool systemMaps ) CListBox *pList = (CListBox *)this->GetDlgItem(IDC_OPEN_LIST); if (pList == NULL) return; pList->ResetContent(); - strcpy(findBuf, dirBuf); - strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf)); + snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf); Bool found = false; @@ -141,15 +139,11 @@ void OpenMap::populateMapListbox( Bool systemMaps ) do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } - strcpy(fileBuf, dirBuf); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf)); - strlcat(fileBuf, "\\", ARRAY_SIZE(findBuf)); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf)); - strlcat(fileBuf, ".map", ARRAY_SIZE(findBuf)); + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { diff --git a/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp b/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp index cc7b029e45b..73703587ed8 100644 --- a/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp @@ -138,22 +138,17 @@ void SaveMap::populateMapListbox( Bool systemMaps ) CListBox *pList = (CListBox *)this->GetDlgItem(IDC_SAVE_LIST); if (pList == NULL) return; pList->ResetContent(); - strcpy(findBuf, dirBuf); - strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf)); + snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf); hFindFile = FindFirstFile(findBuf, &findData); if (hFindFile != INVALID_HANDLE_VALUE) { do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } - strcpy(fileBuf, dirBuf); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf)); - strlcat(fileBuf, "\\", ARRAY_SIZE(fileBuf)); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf)); - strlcat(fileBuf, ".map", ARRAY_SIZE(fileBuf)); + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { @@ -169,7 +164,7 @@ void SaveMap::populateMapListbox( Bool systemMaps ) } CEdit *pEdit = (CEdit*)GetDlgItem(IDC_SAVE_MAP_EDIT); if (pEdit != NULL) { - strcpy(fileBuf, m_pInfo->filename); + strlcpy(fileBuf, m_pInfo->filename, ARRAY_SIZE(fileBuf)); Int len = strlen(fileBuf); if (len>4 && stricmp(".map", fileBuf+(len-4)) == 0) { // strip of the .map diff --git a/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp b/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp index 2bd85b9c81c..50aec1d93d5 100644 --- a/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp @@ -414,20 +414,18 @@ void WorldHeightMapEdit::loadBaseImages(void) void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) { char dirBuf[_MAX_PATH]; - char findBuf[_MAX_PATH]; char fileBuf[_MAX_PATH]; - strcpy(dirBuf, pFilePath); + strlcpy(dirBuf, pFilePath, ARRAY_SIZE(dirBuf)); int len = strlen(dirBuf); if (len > 0 && dirBuf[len - 1] != '\\') { dirBuf[len++] = '\\'; dirBuf[len] = 0; } - strcpy(findBuf, dirBuf); FilenameList filenameList; - TheFileSystem->getFileListInDirectory(AsciiString(findBuf), AsciiString("*.*"), filenameList, TRUE); + TheFileSystem->getFileListInDirectory(AsciiString(dirBuf), AsciiString("*.*"), filenameList, TRUE); if (filenameList.size() == 0) { return; @@ -435,9 +433,7 @@ void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) FilenameList::iterator it = filenameList.begin(); do { AsciiString filename = *it; - - strcpy(fileBuf, dirBuf); - strcat(fileBuf, filename.str()); + strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf)); loadBitmap(fileBuf, filename.str()); ++it; diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp index 4973d45c5f0..e35032a7338 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp @@ -115,11 +115,10 @@ void OpenMap::populateMapListbox( Bool systemMaps ) char fileBuf[_MAX_PATH]; if (systemMaps) - strcpy(dirBuf, "Maps\\"); + strlcpy(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf)); else { - strcpy(dirBuf, TheGlobalData->getPath_UserData().str()); - strlcat(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf)); + snprintf(dirBuf, ARRAY_SIZE(dirBuf), "%sMaps\\", TheGlobalData->getPath_UserData().str()); } int len = strlen(dirBuf); @@ -131,8 +130,7 @@ void OpenMap::populateMapListbox( Bool systemMaps ) CListBox *pList = (CListBox *)this->GetDlgItem(IDC_OPEN_LIST); if (pList == NULL) return; pList->ResetContent(); - strcpy(findBuf, dirBuf); - strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf)); + snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf); Bool found = false; @@ -141,15 +139,11 @@ void OpenMap::populateMapListbox( Bool systemMaps ) do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } - strcpy(fileBuf, dirBuf); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf)); - strlcat(fileBuf, "\\", ARRAY_SIZE(findBuf)); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf)); - strlcat(fileBuf, ".map", ARRAY_SIZE(findBuf)); + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp index 99c10f930be..5cbf2fbddcd 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp @@ -138,22 +138,17 @@ void SaveMap::populateMapListbox( Bool systemMaps ) CListBox *pList = (CListBox *)this->GetDlgItem(IDC_SAVE_LIST); if (pList == NULL) return; pList->ResetContent(); - strcpy(findBuf, dirBuf); - strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf)); + snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf); hFindFile = FindFirstFile(findBuf, &findData); if (hFindFile != INVALID_HANDLE_VALUE) { do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } - strcpy(fileBuf, dirBuf); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf)); - strlcat(fileBuf, "\\", ARRAY_SIZE(fileBuf)); - strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf)); - strlcat(fileBuf, ".map", ARRAY_SIZE(fileBuf)); + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { @@ -169,7 +164,7 @@ void SaveMap::populateMapListbox( Bool systemMaps ) } CEdit *pEdit = (CEdit*)GetDlgItem(IDC_SAVE_MAP_EDIT); if (pEdit != NULL) { - strcpy(fileBuf, m_pInfo->filename); + strlcpy(fileBuf, m_pInfo->filename, ARRAY_SIZE(fileBuf)); Int len = strlen(fileBuf); if (len>4 && stricmp(".map", fileBuf+(len-4)) == 0) { // strip of the .map diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp index e81bf7af7d5..59c6348146c 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp @@ -415,20 +415,18 @@ void WorldHeightMapEdit::loadBaseImages(void) void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) { char dirBuf[_MAX_PATH]; - char findBuf[_MAX_PATH]; char fileBuf[_MAX_PATH]; - strcpy(dirBuf, pFilePath); + strlcpy(dirBuf, pFilePath, ARRAY_SIZE(dirBuf)); int len = strlen(dirBuf); if (len > 0 && dirBuf[len - 1] != '\\') { dirBuf[len++] = '\\'; dirBuf[len] = 0; } - strcpy(findBuf, dirBuf); FilenameList filenameList; - TheFileSystem->getFileListInDirectory(AsciiString(findBuf), AsciiString("*.*"), filenameList, TRUE); + TheFileSystem->getFileListInDirectory(AsciiString(dirBuf), AsciiString("*.*"), filenameList, TRUE); if (filenameList.size() == 0) { return; @@ -436,8 +434,7 @@ void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) FilenameList::iterator it = filenameList.begin(); do { AsciiString filename = *it; - //strcpy(fileBuf, dirBuf); - strcpy(fileBuf, filename.str()); + strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf)); loadBitmap(fileBuf, filename.str()); ++it; From 6a81b52db1e7f1525bf69a2c2e12a662a5207dd4 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Thu, 30 Oct 2025 09:48:53 -0400 Subject: [PATCH 2/4] address PR comments --- Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp | 6 +++--- Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp | 15 ++++----------- .../Tools/WorldBuilder/src/WHeightMapEdit.cpp | 2 +- .../Code/Tools/WorldBuilder/src/OpenMap.cpp | 9 +-------- .../Tools/WorldBuilder/src/WHeightMapEdit.cpp | 2 +- 5 files changed, 10 insertions(+), 24 deletions(-) diff --git a/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp b/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp index ddd54d83146..988b91c493d 100644 --- a/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp +++ b/Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp @@ -148,9 +148,9 @@ int HModelDefClass::Load_W3D(ChunkLoadClass & cload) /* ** process the header info */ - strlcpy(ModelName,header.Name,W3D_NAME_LEN); - strlcpy(BasePoseName,header.HierarchyName,W3D_NAME_LEN); - strcpy(Name,ModelName); + strlcpy(ModelName,header.Name,W3D_NAME_LEN); + strlcpy(BasePoseName,header.HierarchyName,W3D_NAME_LEN); + strcpy(Name,ModelName); /* ** Just allocate a node for the number of sub objects we're expecting diff --git a/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp b/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp index a31d38f614d..351cb609752 100644 --- a/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp @@ -115,18 +115,11 @@ void OpenMap::populateMapListbox( Bool systemMaps ) char fileBuf[_MAX_PATH]; if (systemMaps) - strlcpy(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf)); + strcpy(dirBuf, "Maps\\"); else { snprintf(dirBuf, ARRAY_SIZE(dirBuf), "%sMaps\\", TheGlobalData->getPath_UserData().str()); } - - int len = strlen(dirBuf); - - if (len > 0 && dirBuf[len - 1] != '\\') { - dirBuf[len++] = '\\'; - dirBuf[len] = 0; - } CListBox *pList = (CListBox *)this->GetDlgItem(IDC_OPEN_LIST); if (pList == NULL) return; pList->ResetContent(); @@ -139,9 +132,9 @@ void OpenMap::populateMapListbox( Bool systemMaps ) do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { diff --git a/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp b/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp index 50aec1d93d5..526928537e8 100644 --- a/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp @@ -433,7 +433,7 @@ void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) FilenameList::iterator it = filenameList.begin(); do { AsciiString filename = *it; - strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf)); + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s", dirBuf, filename.str()); loadBitmap(fileBuf, filename.str()); ++it; diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp index e35032a7338..6d24d3d9000 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp @@ -115,18 +115,11 @@ void OpenMap::populateMapListbox( Bool systemMaps ) char fileBuf[_MAX_PATH]; if (systemMaps) - strlcpy(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf)); + strcpy(dirBuf, "Maps\\"); else { snprintf(dirBuf, ARRAY_SIZE(dirBuf), "%sMaps\\", TheGlobalData->getPath_UserData().str()); } - - int len = strlen(dirBuf); - - if (len > 0 && dirBuf[len - 1] != '\\') { - dirBuf[len++] = '\\'; - dirBuf[len] = 0; - } CListBox *pList = (CListBox *)this->GetDlgItem(IDC_OPEN_LIST); if (pList == NULL) return; pList->ResetContent(); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp index 59c6348146c..338f33a6fe1 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp @@ -434,7 +434,7 @@ void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) FilenameList::iterator it = filenameList.begin(); do { AsciiString filename = *it; - strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf)); + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s", dirBuf, filename.str()); loadBitmap(fileBuf, filename.str()); ++it; From 797a340bb914133e2b53bc920ce086059e5834d3 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Thu, 30 Oct 2025 09:55:54 -0400 Subject: [PATCH 3/4] nit: remove formatting only changes --- Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp | 2 +- Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp | 8 ++++---- Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp | 1 + GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp | 8 ++++---- GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp | 8 ++++---- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp b/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp index 351cb609752..5810c435c8a 100644 --- a/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp @@ -136,7 +136,7 @@ void OpenMap::populateMapListbox( Bool systemMaps ) continue; } - snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { diff --git a/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp b/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp index 73703587ed8..4214f468044 100644 --- a/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp @@ -145,10 +145,10 @@ void SaveMap::populateMapListbox( Bool systemMaps ) do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } - snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { diff --git a/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp b/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp index 526928537e8..c126574eabc 100644 --- a/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp @@ -433,6 +433,7 @@ void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) FilenameList::iterator it = filenameList.begin(); do { AsciiString filename = *it; + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s", dirBuf, filename.str()); loadBitmap(fileBuf, filename.str()); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp index 6d24d3d9000..99101543322 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp @@ -132,11 +132,11 @@ void OpenMap::populateMapListbox( Bool systemMaps ) do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } - snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp index 5cbf2fbddcd..22e6a197c7a 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp @@ -145,10 +145,10 @@ void SaveMap::populateMapListbox( Bool systemMaps ) do { if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0) continue; - if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { - continue; - } - snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); + if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) { + continue; + } + snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName); try { CFileStatus status; if (CFile::GetStatus(fileBuf, status)) { From 7860a448052a20182fca0d03805d25e6164103f5 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Thu, 30 Oct 2025 13:15:29 -0400 Subject: [PATCH 4/4] fix: Restore GeneralsMD commented path logic in WHeightMapEdit --- GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp index 338f33a6fe1..972c676027b 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp @@ -434,7 +434,8 @@ void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath) FilenameList::iterator it = filenameList.begin(); do { AsciiString filename = *it; - snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s", dirBuf, filename.str()); + //strcpy(fileBuf, dirBuf); + strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf)); loadBitmap(fileBuf, filename.str()); ++it;