diff --git a/Source/DialogTemplate.cpp b/Source/DialogTemplate.cpp index 4a515372..f05f532c 100644 --- a/Source/DialogTemplate.cpp +++ b/Source/DialogTemplate.cpp @@ -49,10 +49,10 @@ void ReadVarLenArr(BYTE* &seeker, char* &readInto) { break; default: { - DWORD dwStrLen = WCStrLen((WCHAR*)arr); - readInto = new char[dwStrLen]; - WideCharToMultiByte(CP_ACP, 0, (WCHAR*)arr, dwStrLen, readInto, dwStrLen, 0, 0); - seeker += (dwStrLen)*sizeof(WCHAR); + int iStrLen = WideCharToMultiByte(CP_ACP, 0, (WCHAR*)arr, -1, 0, 0, 0, 0); + readInto = new char[iStrLen]; + WideCharToMultiByte(CP_ACP, 0, (WCHAR*)arr, -1, readInto, iStrLen, 0, 0); + seeker += WCStrLen((WCHAR*)arr)*sizeof(WCHAR); } break; } diff --git a/Source/ResourceEditor.cpp b/Source/ResourceEditor.cpp index 63eef7d7..05930bb0 100644 --- a/Source/ResourceEditor.cpp +++ b/Source/ResourceEditor.cpp @@ -340,9 +340,10 @@ CResourceDirectory* CResourceEditor::ScanDirectory(PRESOURCE_DIRECTORY rdRoot, P if (rdToScan->Entries[i].NameIsString) { PIMAGE_RESOURCE_DIR_STRING_U rds = PIMAGE_RESOURCE_DIR_STRING_U(rdToScan->Entries[i].NameOffset + (char*)rdRoot); - szName = new char[rds->Length+1]; - WideCharToMultiByte(CP_ACP, 0, rds->NameString, rds->Length, szName, rds->Length, 0, 0); - szName[rds->Length] = 0; + int mbsSize = WideCharToMultiByte(CP_ACP, 0, rds->NameString, rds->Length, 0, 0, 0, 0); + szName = new char[mbsSize+1]; + WideCharToMultiByte(CP_ACP, 0, rds->NameString, rds->Length, szName, mbsSize, 0, 0); + szName[mbsSize] = 0; } // Else, set the name to this entry's id else