diff --git a/Source/DialogTemplate.cpp b/Source/DialogTemplate.cpp index 5878c640..0895b464 100644 --- a/Source/DialogTemplate.cpp +++ b/Source/DialogTemplate.cpp @@ -275,7 +275,7 @@ void CDialogTemplate::SetFont(char* szFaceName, WORD wFontSize) { } m_dwStyle |= DS_SETFONT; if (m_szFont) delete [] m_szFont; - m_szFont = new char[lstrlen(szFaceName)]; + m_szFont = new char[lstrlen(szFaceName)+1]; lstrcpy(m_szFont, szFaceName); m_sFontSize = wFontSize; } @@ -596,4 +596,4 @@ DWORD CDialogTemplate::GetSize() { } return dwSize; -} \ No newline at end of file +} diff --git a/Source/ResourceEditor.cpp b/Source/ResourceEditor.cpp index 0a6e1598..afc0f884 100644 --- a/Source/ResourceEditor.cpp +++ b/Source/ResourceEditor.cpp @@ -484,7 +484,7 @@ void CResourceEditor::WriteRsrcSec(BYTE* pbRsrcSec) { char* szName = cRDirE->GetName(); WORD iLen = lstrlen(szName); - WCHAR* szwName = new WCHAR[iLen]; + WCHAR* szwName = new WCHAR[iLen+1]; // MultiByteToWideChar return value includes the null char, so -1 iLen = MultiByteToWideChar(CP_ACP, 0, szName, iLen, szwName, iLen) - 1; *(WORD*)seeker = iLen; @@ -658,7 +658,7 @@ DWORD CResourceDirectory::GetSize() { for (unsigned int i = 0; i < m_vEntries.size(); i++) { dwSize += sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY); if (m_vEntries[i]->HasName()) - dwSize += sizeof(IMAGE_RESOURCE_DIR_STRING_U) + m_vEntries[i]->GetNameLength()*sizeof(WCHAR); + dwSize += sizeof(IMAGE_RESOURCE_DIR_STRING_U) + (m_vEntries[i]->GetNameLength()+1)*sizeof(WCHAR); if (m_vEntries[i]->IsDataDirectory()) dwSize += m_vEntries[i]->GetSubDirectory()->GetSize(); else { @@ -700,7 +700,7 @@ CResourceDirectoryEntry::CResourceDirectoryEntry(char* szName, CResourceDirector } else { m_bHasName = true; - m_szName = new char[lstrlen(szName)]; + m_szName = new char[lstrlen(szName)+1]; lstrcpy(m_szName, szName); } m_bIsDataDirectory = true; @@ -715,7 +715,7 @@ CResourceDirectoryEntry::CResourceDirectoryEntry(char* szName, CResourceDataEntr } else { m_bHasName = true; - m_szName = new char[lstrlen(szName)]; + m_szName = new char[lstrlen(szName)+1]; lstrcpy(m_szName, szName); } m_bIsDataDirectory = false; @@ -740,7 +740,7 @@ char* CResourceDirectoryEntry::GetName() { if (!m_bHasName) return 0; char* szName = 0; - szName = new char[lstrlen(m_szName)]; + szName = new char[lstrlen(m_szName)+1]; lstrcpy(szName, m_szName); return szName; } diff --git a/Source/ResourceVersionInfo.cpp b/Source/ResourceVersionInfo.cpp index cd6695e1..f55860ba 100644 --- a/Source/ResourceVersionInfo.cpp +++ b/Source/ResourceVersionInfo.cpp @@ -74,7 +74,7 @@ void CResourceVersionInfo::SetProductVersion(int HighPart, int LowPart) WCHAR* StrToWstrAlloc(const char* istr, int codepage) { int strSize = strlen(istr); - WCHAR* wstr = new WCHAR[(strSize*2)]; + WCHAR* wstr = new WCHAR[(strSize*2)+1]; MultiByteToWideChar(codepage, 0, istr, -1, wstr, strSize*2); return wstr; }