diff --git a/frameworks/resmgr/src/hap_resource_v2.cpp b/frameworks/resmgr/src/hap_resource_v2.cpp index 2867cabab83663b1bc88f8c387b9ca64cd5f8382..0a2660d7a87c508b8bae8d634fbd1c13b657ee87 100644 --- a/frameworks/resmgr/src/hap_resource_v2.cpp +++ b/frameworks/resmgr/src/hap_resource_v2.cpp @@ -238,7 +238,7 @@ void HapResourceV2::InitThemeSystemRes() } for (const auto &cfg : configList) { - if (cfg->GetIdItem()->value_ == "true") { + if (cfg->GetIdItem() != nullptr && cfg->GetIdItem()->value_ == "true") { isThemeSystemResEnable_ = true; return; } diff --git a/interfaces/ets/ani/resourceManager/src/resourceManager.cpp b/interfaces/ets/ani/resourceManager/src/resourceManager.cpp index 4b3eaeb3cc4f8821c3a37604534c16055411380f..029abfb95d22e82a4dd890b57165dc5b4ae9c004 100644 --- a/interfaces/ets/ani/resourceManager/src/resourceManager.cpp +++ b/interfaces/ets/ani/resourceManager/src/resourceManager.cpp @@ -357,7 +357,6 @@ ani_string ResMgrAddon::GetStringSyncById(ani_env* env, ani_object object, ani_l { auto dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; @@ -435,7 +434,6 @@ ani_string ResMgrAddon::GetFormatStringSyncById(ani_env *env, ani_object object, { auto dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; bool ret = GetHapResourceManager(dataContext.get(), resMgr, notUse); @@ -518,7 +516,6 @@ ani_boolean ResMgrAddon::GetBooleanById(ani_env* env, ani_object object, ani_lon { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; @@ -566,7 +563,6 @@ ani_int ResMgrAddon::GetIntById(ani_env* env, ani_object object, ani_long resId) { auto dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; @@ -618,7 +614,6 @@ ani_double ResMgrAddon::GetDoubleById(ani_env* env, ani_object object, ani_long { auto dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; @@ -671,7 +666,6 @@ ani_string ResMgrAddon::GetIntPluralStringValueSyncById(ani_env* env, ani_object { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; double number = num; if (number > INT_MAX) { number = INT_MAX; @@ -746,7 +740,6 @@ ani_string ResMgrAddon::GetDoublePluralStringValueSyncById(ani_env* env, ani_obj { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; dataContext->quantity_ = { false, 0, num }; std::shared_ptr resMgr = nullptr; @@ -808,7 +801,6 @@ ani_long ResMgrAddon::GetColorSyncById(ani_env* env, ani_object object, ani_long { auto dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; @@ -1011,14 +1003,12 @@ ani_object ResMgrAddon::GetMediaContentSyncById(ani_env* env, ani_object object, { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; ani_boolean isUndefined; env->Reference_IsUndefined(density, &isUndefined); + ani_int densityInner = 0; if (!isUndefined) { - ani_int densityInner; env->Object_CallMethodByName_Int(density, "unboxed", ":i", &densityInner); - dataContext->density_ = densityInner; } std::shared_ptr resMgr = nullptr; @@ -1030,7 +1020,7 @@ ani_object ResMgrAddon::GetMediaContentSyncById(ani_env* env, ani_object object, return nullptr; } - RState state = resMgr->GetMediaDataById(resId, dataContext->len_, dataContext->mediaData, dataContext->density_); + RState state = resMgr->GetMediaDataById(resId, dataContext->len_, dataContext->mediaData, densityInner); if (state != RState::SUCCESS) { dataContext->SetErrorMsg("Failed to GetMediaContentSync state", true); ResourceManagerAniUtils::AniThrow(env, state); @@ -1044,14 +1034,12 @@ ani_string ResMgrAddon::GetMediaContentBase64SyncById(ani_env* env, ani_object o { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; ani_boolean isUndefined; env->Reference_IsUndefined(density, &isUndefined); + ani_int densityInner = 0; if (!isUndefined) { - ani_int densityInner; env->Object_CallMethodByName_Int(density, "unboxed", ":i", &densityInner); - dataContext->density_ = densityInner; } std::shared_ptr resMgr = nullptr; @@ -1063,7 +1051,7 @@ ani_string ResMgrAddon::GetMediaContentBase64SyncById(ani_env* env, ani_object o return nullptr; } - RState state = resMgr->GetMediaBase64DataById(resId, dataContext->value_, dataContext->density_); + RState state = resMgr->GetMediaBase64DataById(resId, dataContext->value_, densityInner); if (state != RState::SUCCESS) { dataContext->SetErrorMsg("Failed to GetMediaContentBase64Sync state", true); ResourceManagerAniUtils::AniThrow(env, state); @@ -1076,7 +1064,6 @@ ani_object ResMgrAddon::GetStringArrayValueSyncById(ani_env* env, ani_object obj { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0; @@ -1104,10 +1091,9 @@ ani_object ResMgrAddon::GetMediaByNameSync(ani_env* env, ani_object object, ani_ ani_boolean isUndefined; env->Reference_IsUndefined(density, &isUndefined); + ani_int densityInner = 0; if (!isUndefined) { - ani_int densityInner; env->Object_CallMethodByName_Int(density, "unboxed", ":i", &densityInner); - dataContext->density_ = densityInner; } std::shared_ptr resMgr = nullptr; @@ -1120,7 +1106,7 @@ ani_object ResMgrAddon::GetMediaByNameSync(ani_env* env, ani_object object, ani_ } RState state = resMgr->GetMediaDataByName(dataContext->resName_.c_str(), - dataContext->len_, dataContext->mediaData, dataContext->density_); + dataContext->len_, dataContext->mediaData, densityInner); if (state != RState::SUCCESS) { dataContext->SetErrorMsg("GetMediaByNameSync failed state", false); ResourceManagerAniUtils::AniThrow(env, state); @@ -1138,10 +1124,9 @@ ani_string ResMgrAddon::GetMediaBase64ByNameSync(ani_env* env, ani_object object ani_boolean isUndefined; env->Reference_IsUndefined(density, &isUndefined); + ani_int densityInner = 0; if (!isUndefined) { - ani_int densityInner; env->Object_CallMethodByName_Int(density, "unboxed", ":i", &densityInner); - dataContext->density_ = densityInner; } std::shared_ptr resMgr = nullptr; @@ -1154,7 +1139,7 @@ ani_string ResMgrAddon::GetMediaBase64ByNameSync(ani_env* env, ani_object object } RState state = resMgr->GetMediaBase64DataByName(dataContext->resName_.c_str(), - dataContext->value_, dataContext->density_); + dataContext->value_, densityInner); if (state != RState::SUCCESS) { dataContext->SetErrorMsg("Failed to get media data in GetMediaBase64ByNameSync", false); ResourceManagerAniUtils::AniThrow(env, state); @@ -1205,21 +1190,21 @@ ani_object ResMgrAddon::GetDrawableDescriptorById(ani_env* env, ani_object objec { auto dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; + dataContext->resId_ = static_cast(resId); ani_boolean isUndefined; env->Reference_IsUndefined(density, &isUndefined); if (!isUndefined) { ani_int densityInner; env->Object_CallMethodByName_Int(density, "unboxed", ":i", &densityInner); - dataContext->density_ = densityInner; + dataContext->density_ = static_cast(densityInner); } env->Reference_IsUndefined(type, &isUndefined); if (!isUndefined) { ani_int typeInner; env->Object_CallMethodByName_Int(type, "unboxed", ":i", &typeInner); - dataContext->iconType_ = typeInner; + dataContext->iconType_ = static_cast(typeInner); } return CreateDrawableDescriptorbyId(env, dataContext); } @@ -1278,14 +1263,14 @@ ani_object ResMgrAddon::GetDrawableDescriptorByName(ani_env* env, ani_object obj if (!isUndefined) { ani_int densityInner; env->Object_CallMethodByName_Int(density, "unboxed", ":i", &densityInner); - dataContext->density_ = densityInner; + dataContext->density_ = static_cast(densityInner); } env->Reference_IsUndefined(type, &isUndefined); if (!isUndefined) { ani_int typeInner; env->Object_CallMethodByName_Int(type, "unboxed", ":i", &typeInner); - dataContext->iconType_ = typeInner; + dataContext->iconType_ = static_cast(typeInner); } dataContext->addon_ = UnwrapAddon(env, object); @@ -1519,7 +1504,6 @@ ani_long ResMgrAddon::GetSymbolById(ani_env* env, ani_object object, ani_long re { std::unique_ptr dataContext = std::make_unique(); dataContext->addon_ = UnwrapAddon(env, object); - dataContext->resId_ = resId; std::shared_ptr resMgr = nullptr; uint32_t notUse = 0;