diff --git a/OBSApi/Utility/ConfigFile.cpp b/OBSApi/Utility/ConfigFile.cpp index bf83fa7c..088d8654 100644 --- a/OBSApi/Utility/ConfigFile.cpp +++ b/OBSApi/Utility/ConfigFile.cpp @@ -70,6 +70,16 @@ BOOL ConfigFile::LoadFile(DWORD dwOpenMode) dwLength = (DWORD)file.GetFileSize(); + if (dwLength >= 3) // remove BOM if present + { + char buff[3]; + file.Read(&buff, 3); + if (memcmp(buff, "\xEF\xBB\xBF", 3)) + file.SetPos(0, XFILE_BEGIN); + else + dwLength -= 3; + } + LPSTR lpTempFileData = (LPSTR)Allocate(dwLength+5); file.Read(&lpTempFileData[2], dwLength); lpTempFileData[0] = lpTempFileData[dwLength+2] = 13; diff --git a/OBSApi/Utility/XFile.h b/OBSApi/Utility/XFile.h index d68bbe1d..47496b9d 100644 --- a/OBSApi/Utility/XFile.h +++ b/OBSApi/Utility/XFile.h @@ -65,6 +65,17 @@ public: SetPos(0, XFILE_BEGIN); DWORD dwFileSize = (DWORD)GetFileSize(); + + if (dwFileSize >= 3) // remove BOM if present + { + char buff[3]; + Read(&buff, 3); + if (memcmp(buff, "\xEF\xBB\xBF", 3)) + SetPos(0, XFILE_BEGIN); + else + dwFileSize -= 3; + } + LPSTR lpFileDataUTF8 = (LPSTR)Allocate(dwFileSize+1); lpFileDataUTF8[dwFileSize] = 0;