fix some fatal error when fully-rewrite file
This commit is contained in:
@ -20,8 +20,8 @@ namespace LibCmo::CK2 {
|
||||
/**
|
||||
* @brief Current Version of Dev
|
||||
*/
|
||||
constexpr const CKDWORD DEVVERSION = 0x02010001u;
|
||||
constexpr const CKDWORD DEVBUILD = 0u;
|
||||
constexpr const CKDWORD DEVBUILD = 0x02010001u;
|
||||
constexpr const CKDWORD DEVVERSION = 0u;
|
||||
constexpr const CKGUID VIRTOOLS_GUID = CKGUID(0x56495254u, 0x4f4f4c53u);
|
||||
|
||||
// ========== Class registration utilities ==========
|
||||
|
@ -87,8 +87,13 @@ namespace LibCmo::CK2 {
|
||||
CKDWORD sumDataObjSize = 0,
|
||||
sumHdrObjSize = 0;
|
||||
for (auto& obj : m_FileObjects) {
|
||||
// += 4DWORD(ObjId, ObjCid, FileIndex, NameLen) + Name size
|
||||
sumHdrObjSize += 4 * sizeof(CKDWORD) + obj.Name.size();
|
||||
// += 4DWORD(ObjId, ObjCid, FileIndex, NameLen)
|
||||
sumHdrObjSize += 4 * sizeof(CKDWORD);
|
||||
if (obj.Name.c_str() != nullptr) {
|
||||
// += Name size
|
||||
m_Ctx->GetNativeString(obj.Name.string(), name_conv);
|
||||
sumHdrObjSize += name_conv.size();
|
||||
}
|
||||
|
||||
if (obj.Data == nullptr) {
|
||||
obj.PackSize = 0;
|
||||
|
@ -32,7 +32,7 @@ namespace LibCmo::EncodingHelper {
|
||||
count = WideCharToMultiByte(codepage, 0, src, -1, NULL, 0, NULL, NULL);
|
||||
if (count <= 0) return false;
|
||||
|
||||
dest.resize(count);
|
||||
dest.resize(count - 1);
|
||||
write_result = WideCharToMultiByte(codepage, 0, src, -1, dest.data(), count, NULL, NULL);
|
||||
if (write_result <= 0) return false;
|
||||
|
||||
@ -49,7 +49,7 @@ namespace LibCmo::EncodingHelper {
|
||||
wcount = MultiByteToWideChar(codepage, 0, src, -1, NULL, 0);
|
||||
if (wcount <= 0) return false;
|
||||
|
||||
dest.resize(wcount);
|
||||
dest.resize(wcount - 1);
|
||||
write_result = MultiByteToWideChar(codepage, 0, src, -1, dest.data(), wcount);
|
||||
if (write_result <= 0) return false;
|
||||
|
||||
|
Reference in New Issue
Block a user