From a9adff1a607bb224985f558db6916f95da8affc3 Mon Sep 17 00:00:00 2001 From: fancy <258828110.@qq.com> Date: Fri, 3 Nov 2023 21:49:12 -0700 Subject: [PATCH] Fiex bug of shared Data module. --- test/utils/SharedData/src/SharedDataTest.cpp | 32 ++++++++++++++++++++ utils/SharedData/src/SharedDataImpl.cpp | 20 ++++++++---- 2 files changed, 46 insertions(+), 6 deletions(-) diff --git a/test/utils/SharedData/src/SharedDataTest.cpp b/test/utils/SharedData/src/SharedDataTest.cpp index 58df1d9..5b24560 100644 --- a/test/utils/SharedData/src/SharedDataTest.cpp +++ b/test/utils/SharedData/src/SharedDataTest.cpp @@ -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 \ No newline at end of file diff --git a/utils/SharedData/src/SharedDataImpl.cpp b/utils/SharedData/src/SharedDataImpl.cpp index 80049d0..6e6de0e 100644 --- a/utils/SharedData/src/SharedDataImpl.cpp +++ b/utils/SharedData/src/SharedDataImpl.cpp @@ -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) {