diff --git a/trunk/ConsoleDataMigration/common/configLoader.cpp b/trunk/ConsoleDataMigration/common/configLoader.cpp index 2480ca1..24dfdcf 100644 --- a/trunk/ConsoleDataMigration/common/configLoader.cpp +++ b/trunk/ConsoleDataMigration/common/configLoader.cpp @@ -13,7 +13,8 @@ Result ConfigFileLoader::Initialize(const wchar_t* fileName, void* buffer, const NN_UTIL_RETURN_IF_FAILED(fi.TryInitialize(fileName)); NN_UTIL_RETURN_IF_FAILED(fi.TryGetSize(&fileSize)); - if (fileSize > bufferSize) + // NULL終端ぶん読めるサイズを減らす + if (fileSize > bufferSize - 2) { NN_TLOG_("Too Large File\n"); return Result(nn::Result::LEVEL_FATAL, nn::Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::MODULE_COMMON, nn::Result::DESCRIPTION_TOO_LARGE); @@ -57,6 +58,8 @@ Result ConfigFileLoader::ParseData() bool inEscape = false; // # で行末までコメント bool inComment = false; + // : で行頭から:までがkey、:から行末までがvalue + bool inSettingKeyValue = false; while (pos < m_UsedBufferSize / sizeof(m_Buffer[0])) { @@ -80,6 +83,15 @@ Result ConfigFileLoader::ParseData() { break; } + + if(inSettingKeyValue) + { + break; + } + else + { + inSettingKeyValue = true; + } m_Buffer[pos] = L'\0'; m_ParamValue[m_ParamNum++] = &(m_Buffer[pos + 1]); } @@ -92,6 +104,11 @@ Result ConfigFileLoader::ParseData() { inComment = false; } + if(inSettingKeyValue) + { + inSettingKeyValue = false; + } + m_Buffer[pos] = L'\0'; m_ParamName[m_ParamNum] = &(m_Buffer[pos + 1]); m_ParamValue[m_ParamNum] = L'\0';