Skip to content

Commit f947151

Browse files
committed
refactor: Eliminate redundant buffer copies
1 parent d1c5082 commit f947151

File tree

8 files changed

+33
-64
lines changed

8 files changed

+33
-64
lines changed

Core/Libraries/Source/WWVegas/WW3D2/hmdldef.H

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ private:
8585

8686
char Name[2*W3D_NAME_LEN]; // <basepose>.<modelname>
8787
char ModelName[W3D_NAME_LEN]; // name of the model
88-
char BasePoseName[W3D_NAME_LEN]; // name of the base pose (hierarchy tree)
8988

9089
int SubObjectCount;
9190
HmdlNodeDefStruct * SubObjects;

Core/Libraries/Source/WWVegas/WW3D2/hmdldef.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ int HModelDefClass::Load_W3D(ChunkLoadClass & cload)
149149
** process the header info
150150
*/
151151
strlcpy(ModelName,header.Name,W3D_NAME_LEN);
152-
strlcpy(BasePoseName,header.HierarchyName,W3D_NAME_LEN);
153-
strcpy(Name,ModelName);
152+
strlcpy(Name,ModelName,ARRAY_SIZE(Name));
154153

155154
/*
156155
** Just allocate a node for the number of sub objects we're expecting

Generals/Code/Tools/WorldBuilder/src/OpenMap.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,10 @@ void OpenMap::populateMapListbox( Bool systemMaps )
115115
char fileBuf[_MAX_PATH];
116116

117117
if (systemMaps)
118-
strcpy(dirBuf, "Maps\\");
118+
strlcpy(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf));
119119
else
120120
{
121-
strcpy(dirBuf, TheGlobalData->getPath_UserData().str());
122-
strlcat(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf));
121+
snprintf(dirBuf, ARRAY_SIZE(dirBuf), "%sMaps\\", TheGlobalData->getPath_UserData().str());
123122
}
124123

125124
int len = strlen(dirBuf);
@@ -131,8 +130,7 @@ void OpenMap::populateMapListbox( Bool systemMaps )
131130
CListBox *pList = (CListBox *)this->GetDlgItem(IDC_OPEN_LIST);
132131
if (pList == NULL) return;
133132
pList->ResetContent();
134-
strcpy(findBuf, dirBuf);
135-
strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf));
133+
snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf);
136134

137135
Bool found = false;
138136

@@ -141,15 +139,11 @@ void OpenMap::populateMapListbox( Bool systemMaps )
141139
do {
142140
if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0)
143141
continue;
144-
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
145-
continue;
146-
}
142+
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
143+
continue;
144+
}
147145

148-
strcpy(fileBuf, dirBuf);
149-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf));
150-
strlcat(fileBuf, "\\", ARRAY_SIZE(findBuf));
151-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf));
152-
strlcat(fileBuf, ".map", ARRAY_SIZE(findBuf));
146+
snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName);
153147
try {
154148
CFileStatus status;
155149
if (CFile::GetStatus(fileBuf, status)) {

Generals/Code/Tools/WorldBuilder/src/SaveMap.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,17 @@ void SaveMap::populateMapListbox( Bool systemMaps )
138138
CListBox *pList = (CListBox *)this->GetDlgItem(IDC_SAVE_LIST);
139139
if (pList == NULL) return;
140140
pList->ResetContent();
141-
strcpy(findBuf, dirBuf);
142-
strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf));
141+
snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf);
143142

144143
hFindFile = FindFirstFile(findBuf, &findData);
145144
if (hFindFile != INVALID_HANDLE_VALUE) {
146145
do {
147146
if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0)
148147
continue;
149-
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
150-
continue;
151-
}
152-
strcpy(fileBuf, dirBuf);
153-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf));
154-
strlcat(fileBuf, "\\", ARRAY_SIZE(fileBuf));
155-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf));
156-
strlcat(fileBuf, ".map", ARRAY_SIZE(fileBuf));
148+
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
149+
continue;
150+
}
151+
snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName);
157152
try {
158153
CFileStatus status;
159154
if (CFile::GetStatus(fileBuf, status)) {
@@ -169,7 +164,7 @@ void SaveMap::populateMapListbox( Bool systemMaps )
169164
}
170165
CEdit *pEdit = (CEdit*)GetDlgItem(IDC_SAVE_MAP_EDIT);
171166
if (pEdit != NULL) {
172-
strcpy(fileBuf, m_pInfo->filename);
167+
strlcpy(fileBuf, m_pInfo->filename, ARRAY_SIZE(fileBuf));
173168
Int len = strlen(fileBuf);
174169
if (len>4 && stricmp(".map", fileBuf+(len-4)) == 0) {
175170
// strip of the .map

Generals/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -414,30 +414,26 @@ void WorldHeightMapEdit::loadBaseImages(void)
414414
void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath)
415415
{
416416
char dirBuf[_MAX_PATH];
417-
char findBuf[_MAX_PATH];
418417
char fileBuf[_MAX_PATH];
419418

420-
strcpy(dirBuf, pFilePath);
419+
strlcpy(dirBuf, pFilePath, ARRAY_SIZE(dirBuf));
421420
int len = strlen(dirBuf);
422421

423422
if (len > 0 && dirBuf[len - 1] != '\\') {
424423
dirBuf[len++] = '\\';
425424
dirBuf[len] = 0;
426425
}
427-
strcpy(findBuf, dirBuf);
428426

429427
FilenameList filenameList;
430-
TheFileSystem->getFileListInDirectory(AsciiString(findBuf), AsciiString("*.*"), filenameList, TRUE);
428+
TheFileSystem->getFileListInDirectory(AsciiString(dirBuf), AsciiString("*.*"), filenameList, TRUE);
431429

432430
if (filenameList.size() == 0) {
433431
return;
434432
}
435433
FilenameList::iterator it = filenameList.begin();
436434
do {
437435
AsciiString filename = *it;
438-
439-
strcpy(fileBuf, dirBuf);
440-
strcat(fileBuf, filename.str());
436+
strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf));
441437
loadBitmap(fileBuf, filename.str());
442438

443439
++it;

GeneralsMD/Code/Tools/WorldBuilder/src/OpenMap.cpp

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,10 @@ void OpenMap::populateMapListbox( Bool systemMaps )
115115
char fileBuf[_MAX_PATH];
116116

117117
if (systemMaps)
118-
strcpy(dirBuf, "Maps\\");
118+
strlcpy(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf));
119119
else
120120
{
121-
strcpy(dirBuf, TheGlobalData->getPath_UserData().str());
122-
strlcat(dirBuf, "Maps\\", ARRAY_SIZE(dirBuf));
121+
snprintf(dirBuf, ARRAY_SIZE(dirBuf), "%sMaps\\", TheGlobalData->getPath_UserData().str());
123122
}
124123

125124
int len = strlen(dirBuf);
@@ -131,8 +130,7 @@ void OpenMap::populateMapListbox( Bool systemMaps )
131130
CListBox *pList = (CListBox *)this->GetDlgItem(IDC_OPEN_LIST);
132131
if (pList == NULL) return;
133132
pList->ResetContent();
134-
strcpy(findBuf, dirBuf);
135-
strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf));
133+
snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf);
136134

137135
Bool found = false;
138136

@@ -141,15 +139,11 @@ void OpenMap::populateMapListbox( Bool systemMaps )
141139
do {
142140
if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0)
143141
continue;
144-
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
145-
continue;
146-
}
142+
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
143+
continue;
144+
}
147145

148-
strcpy(fileBuf, dirBuf);
149-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf));
150-
strlcat(fileBuf, "\\", ARRAY_SIZE(findBuf));
151-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(findBuf));
152-
strlcat(fileBuf, ".map", ARRAY_SIZE(findBuf));
146+
snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName);
153147
try {
154148
CFileStatus status;
155149
if (CFile::GetStatus(fileBuf, status)) {

GeneralsMD/Code/Tools/WorldBuilder/src/SaveMap.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,22 +138,17 @@ void SaveMap::populateMapListbox( Bool systemMaps )
138138
CListBox *pList = (CListBox *)this->GetDlgItem(IDC_SAVE_LIST);
139139
if (pList == NULL) return;
140140
pList->ResetContent();
141-
strcpy(findBuf, dirBuf);
142-
strlcat(findBuf, "*.*", ARRAY_SIZE(findBuf));
141+
snprintf(findBuf, ARRAY_SIZE(findBuf), "%s*.*", dirBuf);
143142

144143
hFindFile = FindFirstFile(findBuf, &findData);
145144
if (hFindFile != INVALID_HANDLE_VALUE) {
146145
do {
147146
if (strcmp(findData.cFileName, ".") == 0 || strcmp(findData.cFileName, "..") == 0)
148147
continue;
149-
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
150-
continue;
151-
}
152-
strcpy(fileBuf, dirBuf);
153-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf));
154-
strlcat(fileBuf, "\\", ARRAY_SIZE(fileBuf));
155-
strlcat(fileBuf, findData.cFileName, ARRAY_SIZE(fileBuf));
156-
strlcat(fileBuf, ".map", ARRAY_SIZE(fileBuf));
148+
if ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) {
149+
continue;
150+
}
151+
snprintf(fileBuf, ARRAY_SIZE(fileBuf), "%s%s\\%s.map", dirBuf, findData.cFileName, findData.cFileName);
157152
try {
158153
CFileStatus status;
159154
if (CFile::GetStatus(fileBuf, status)) {
@@ -169,7 +164,7 @@ void SaveMap::populateMapListbox( Bool systemMaps )
169164
}
170165
CEdit *pEdit = (CEdit*)GetDlgItem(IDC_SAVE_MAP_EDIT);
171166
if (pEdit != NULL) {
172-
strcpy(fileBuf, m_pInfo->filename);
167+
strlcpy(fileBuf, m_pInfo->filename, ARRAY_SIZE(fileBuf));
173168
Int len = strlen(fileBuf);
174169
if (len>4 && stricmp(".map", fileBuf+(len-4)) == 0) {
175170
// strip of the .map

GeneralsMD/Code/Tools/WorldBuilder/src/WHeightMapEdit.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -415,29 +415,26 @@ void WorldHeightMapEdit::loadBaseImages(void)
415415
void WorldHeightMapEdit::loadDirectoryOfImages(const char *pFilePath)
416416
{
417417
char dirBuf[_MAX_PATH];
418-
char findBuf[_MAX_PATH];
419418
char fileBuf[_MAX_PATH];
420419

421-
strcpy(dirBuf, pFilePath);
420+
strlcpy(dirBuf, pFilePath, ARRAY_SIZE(dirBuf));
422421
int len = strlen(dirBuf);
423422

424423
if (len > 0 && dirBuf[len - 1] != '\\') {
425424
dirBuf[len++] = '\\';
426425
dirBuf[len] = 0;
427426
}
428-
strcpy(findBuf, dirBuf);
429427

430428
FilenameList filenameList;
431-
TheFileSystem->getFileListInDirectory(AsciiString(findBuf), AsciiString("*.*"), filenameList, TRUE);
429+
TheFileSystem->getFileListInDirectory(AsciiString(dirBuf), AsciiString("*.*"), filenameList, TRUE);
432430

433431
if (filenameList.size() == 0) {
434432
return;
435433
}
436434
FilenameList::iterator it = filenameList.begin();
437435
do {
438436
AsciiString filename = *it;
439-
//strcpy(fileBuf, dirBuf);
440-
strcpy(fileBuf, filename.str());
437+
strlcpy(fileBuf, filename.str(), ARRAY_SIZE(fileBuf));
441438
loadBitmap(fileBuf, filename.str());
442439

443440
++it;

0 commit comments

Comments
 (0)