diff --git a/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp b/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp index 7e7dffb308f8d763a2c24c8c31db53a8b6453470..cd40cb986f9e7e51dec84ac24a2678e7f491d6f4 100644 --- a/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp +++ b/libpurgeablemem/cpp/src/purgeable_resource_manager.cpp @@ -201,6 +201,10 @@ void PurgeableResourceManager::EndAccessPurgeableMem() void PurgeableResourceManager::ChangeDataValid(std::shared_ptr resourcePtr, bool isVaild) const { + if (resourcePtr == nullptr) { + return; + } + StartTrace(HITRACE_TAG_ZIMAGE, "OHOS::PurgeableMem::PurgeableResourceManager::ChangeDataValid"); std::lock_guard dataLock(resourcePtr->dataLock_); resourcePtr->SetDataValid(isVaild); diff --git a/libpurgeablemem/test/purgeableresourcemanager_test.cpp b/libpurgeablemem/test/purgeableresourcemanager_test.cpp index 1a2060dd3138fe14f593d62da38438cf11aa9e0e..17ec71e78b5facadcae9c6c0efb5cec9cee3b006 100644 --- a/libpurgeablemem/test/purgeableresourcemanager_test.cpp +++ b/libpurgeablemem/test/purgeableresourcemanager_test.cpp @@ -144,10 +144,10 @@ HWTEST_F(PurgeableResourceManagerTest, EndAccessPurgeableMemTest, TestSize.Level HWTEST_F(PurgeableResourceManagerTest, AddResourceTest, TestSize.Level1) { std::shared_ptr key = std::make_shared(); - PurgeableResourceManager::GetInstance().AddResource(nullptr); PurgeableResourceManager::GetInstance().AddResource(key); - EXPECT_EQ(PurgeableResourceManager::GetInstance().lruCache_.Size(), 1); + PurgeableResourceManager::GetInstance().AddResource(nullptr); PurgeableResourceManager::GetInstance().Clear(); + EXPECT_EQ(PurgeableResourceManager::GetInstance().lruCache_.Size(), 0); } HWTEST_F(PurgeableResourceManagerTest, RemoveResourceTest, TestSize.Level1) @@ -155,10 +155,11 @@ HWTEST_F(PurgeableResourceManagerTest, RemoveResourceTest, TestSize.Level1) std::shared_ptr key = std::make_shared(); PurgeableResourceManager::GetInstance().RemoveResource(nullptr); PurgeableResourceManager::GetInstance().AddResource(key); - EXPECT_EQ(PurgeableResourceManager::GetInstance().lruCache_.Size(), 1); PurgeableResourceManager::GetInstance().RemoveResource(key); - EXPECT_EQ(PurgeableResourceManager::GetInstance().lruCache_.Size(), 0); + PurgeableResourceManager::GetInstance().ChangeDataValid(key, true) ; + PurgeableResourceManager::GetInstance().ChangeDataValid(nullptr, true); PurgeableResourceManager::GetInstance().Clear(); + EXPECT_EQ(PurgeableResourceManager::GetInstance().lruCache_.Size(), 0); } HWTEST_F(PurgeableResourceManagerTest, SetRecentUsedResourceTest, TestSize.Level1)