Fiex bug of shared Data module.

This commit is contained in:
fancy 2023-11-03 21:49:12 -07:00
parent aaa3fb036d
commit a9adff1a60
2 changed files with 46 additions and 6 deletions

View File

@ -188,4 +188,36 @@ namespace SharedDataTest
}
ILogUnInit();
}
// ../output_files/test/bin/SharedDataTest --gtest_filter=SharedDataTest.Demo7
TEST(SharedDataTest, Demo7)
{
constexpr int WRITABLE_DATA = 189;
CreateLogModule();
ILogInit(LOG_INSTANCE_TYPE_END);
constexpr int PROJECT_ID = 9;
SharedData *sharedDataPrimary = CreateSharedData(SHARER_NAME_PRIMARY, "./shared_file", PROJECT_ID);
SharedData *sharedDataMinor = CreateSharedData(SHARER_NAME_MINOR, "./shared_file", PROJECT_ID);
if (nullptr != sharedDataPrimary)
{
IMakeSharedData(sharedDataPrimary, sizeof(int), sizeof(int));
ISetWritableData(sharedDataPrimary, (void *)&WRITABLE_DATA, sizeof(int));
}
if (nullptr != sharedDataMinor)
{
constexpr int DEFAULT_DATA = 0;
int readableData = DEFAULT_DATA;
IMakeSharedData(sharedDataMinor, sizeof(int), sizeof(int));
StatusCode code = IGetReadableData(sharedDataMinor, &readableData, sizeof(int));
PrintStringCode(code);
LogInfo("readableData = %d\n", readableData);
EXPECT_EQ(code.mStatusCode, STATUS_CODE_OK);
EXPECT_EQ(readableData, WRITABLE_DATA);
IFree(sharedDataMinor);
}
if (nullptr != sharedDataPrimary)
{
IFree(sharedDataPrimary);
}
ILogUnInit();
}
} // namespace SharedDataTest

View File

@ -128,17 +128,25 @@ void SharedDataCpp::SetWritableMemory(void *buf, const unsigned int &bufLength)
if (SHARER_NAME_PRIMARY == mSharerName && bufLength == mMinorReadSize)
{
UserDataHeader *readableHeader = (UserDataHeader *)((char *)mSharedMemeory);
if (memcmp(readableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0 &&
mPrimaryReadSize == readableHeader->mDataLength)
if (memcmp(readableHeader->mUserName, USER_NAME_INIT_NAME, USER_NAME_BUF_LENGTH) == 0)
{
if (mPrimaryReadSize == readableHeader->mDataLength)
{
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
buf,
bufLength);
}
else
{
LogError("Peer not match.\n");
}
}
else
{
memcpy((char *)mSharedMemeory + sizeof(UserDataHeader) * THERE_TWO_USER_DATA_HEADER + mPrimaryReadSize,
buf,
bufLength);
}
else
{
LogError("Peer not match.\n");
}
}
else if (SHARER_NAME_MINOR == mSharerName && bufLength == mPrimaryReadSize)
{