From e4ebe9289eeb6954dc73c8220bc20775f546de17 Mon Sep 17 00:00:00 2001 From: zhaoyrr Date: Thu, 11 Sep 2025 18:17:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E7=AB=9E=E4=BA=89=E5=91=8A?= =?UTF-8?q?=E8=AD=A6=E7=AC=AC=E4=B8=80=E7=AC=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhaoyrr --- frameworks/native/ability/native/ability.cpp | 8 +++++++- .../ability/native/ability_runtime/js_caller_complex.cpp | 4 ++++ frameworks/native/runtime/ets_runtime.cpp | 4 ++++ frameworks/native/runtime/js_runtime.cpp | 1 + services/abilitymgr/include/recovery_info_timer.h | 2 +- services/abilitymgr/src/mission/mission_list_manager.cpp | 4 +++- .../src/scene_board/ui_ability_lifecycle_manager.cpp | 3 +++ 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/frameworks/native/ability/native/ability.cpp b/frameworks/native/ability/native/ability.cpp index db64c4208d9..e1c4afb6897 100644 --- a/frameworks/native/ability/native/ability.cpp +++ b/frameworks/native/ability/native/ability.cpp @@ -137,6 +137,10 @@ void Ability::Init(const std::shared_ptr &abilityInfo, const std::s #endif lifecycle_ = std::make_shared(); abilityLifecycleExecutor_ = std::make_shared(); + if (abilityLifecycleExecutor_ == nullptr) { + TAG_LOGE(AAFwkTag::ABILITY, "null abilityLifecycleExecutor_"); + return; + } abilityLifecycleExecutor_->DispatchLifecycleState(AbilityLifecycleExecutor::LifecycleState::INITIAL); if (abilityContext_ != nullptr) { @@ -642,7 +646,9 @@ void Ability::OnEventDispatch() void Ability::SetWant(const AAFwk::Want &want) { - setWant_ = std::make_shared(want); + if (setWant_ != nullptr) { + setWant_ = std::make_shared(want); + } } std::shared_ptr Ability::GetWant() diff --git a/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp b/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp index bc106b9372c..bbd3499a276 100644 --- a/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp +++ b/frameworks/native/ability/native/ability_runtime/js_caller_complex.cpp @@ -362,11 +362,13 @@ private: if (callerCallBackObj_ == nullptr) { TAG_LOGE(AAFwkTag::DEFAULT, "null CallBacker"); ThrowError(env, AbilityErrorCode::ERROR_CODE_INNER); + return CreateJsUndefined(env); } if (!releaseCallFunc_) { TAG_LOGE(AAFwkTag::DEFAULT, "null releaseFunc"); ThrowError(env, AbilityErrorCode::ERROR_CODE_INNER); + return CreateJsUndefined(env); } callee_ = nullptr; callerCallBackObj_->SetCallBack(nullptr); @@ -375,6 +377,7 @@ private: if (innerErrorCode != ERR_OK) { TAG_LOGE(AAFwkTag::DEFAULT, "ReleaseAbility failed %{public}d", static_cast(innerErrorCode)); ThrowError(env, innerErrorCode); + return CreateJsUndefined(env); } return CreateJsUndefined(env); @@ -387,6 +390,7 @@ private: if (info.argc < argcOne) { TAG_LOGE(AAFwkTag::DEFAULT, "Invalid argc"); ThrowTooFewParametersError(env); + return CreateJsUndefined(env); } bool isCallable = false; napi_is_callable(env, info.argv[0], &isCallable); diff --git a/frameworks/native/runtime/ets_runtime.cpp b/frameworks/native/runtime/ets_runtime.cpp index bd546e081bb..ad2fce8a738 100644 --- a/frameworks/native/runtime/ets_runtime.cpp +++ b/frameworks/native/runtime/ets_runtime.cpp @@ -149,6 +149,10 @@ bool ETSRuntime::PostFork(const Options &options, std::unique_ptr &js } if (jsRuntime_ != nullptr) { auto vm = static_cast(jsRuntime_.get())->GetEcmaVm(); + if (vm == nullptr) { + TAG_LOGE(AAFwkTag::ETSRUNTIME, "null js vm"); + return false; + } panda::JSNApi::SetHostResolveBufferTrackerForHybridApp( vm, HybridJsModuleReader(options.bundleName, options.hapPath, options.isUnique)); } diff --git a/frameworks/native/runtime/js_runtime.cpp b/frameworks/native/runtime/js_runtime.cpp index 0095eac0fc4..6a2634650c0 100644 --- a/frameworks/native/runtime/js_runtime.cpp +++ b/frameworks/native/runtime/js_runtime.cpp @@ -1666,6 +1666,7 @@ void JsRuntime::SetDeviceDisconnectCallback(const std::function &cb) void JsRuntime::SetStopPreloadSoCallback(const std::function &callback) { auto vm = GetEcmaVm(); + CHECK_POINTER(vm); panda::JSNApi::SetStopPreLoadSoCallback(vm, callback); } diff --git a/services/abilitymgr/include/recovery_info_timer.h b/services/abilitymgr/include/recovery_info_timer.h index 7f795de10ed..4fd0af7f5ae 100644 --- a/services/abilitymgr/include/recovery_info_timer.h +++ b/services/abilitymgr/include/recovery_info_timer.h @@ -33,7 +33,7 @@ struct RecoveryInfo { class RecoveryInfoTimer { RecoveryInfoTimer() = default; - ~RecoveryInfoTimer() = default; + virtual ~RecoveryInfoTimer() = default; public: static RecoveryInfoTimer& GetInstance(); diff --git a/services/abilitymgr/src/mission/mission_list_manager.cpp b/services/abilitymgr/src/mission/mission_list_manager.cpp index 838b6eca1f0..5b84b4d296d 100644 --- a/services/abilitymgr/src/mission/mission_list_manager.cpp +++ b/services/abilitymgr/src/mission/mission_list_manager.cpp @@ -4261,7 +4261,9 @@ int MissionListManager::PrepareClearMissionLocked(int missionId, const std::shar handler->CancelTask("PrepareTerminate_" + std::to_string(abilityRecord->GetAbilityRecordId())); return ERR_OK; } - handler->CancelTask("PrepareTerminate_" + std::to_string(abilityRecord->GetAbilityRecordId())); + if (handler) { + handler->CancelTask("PrepareTerminate_" + std::to_string(abilityRecord->GetAbilityRecordId())); + } return ClearMissionLocked(missionId, mission); } diff --git a/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp b/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp index 48f7efdcf65..eed37e91d80 100644 --- a/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp +++ b/services/abilitymgr/src/scene_board/ui_ability_lifecycle_manager.cpp @@ -1384,6 +1384,9 @@ int UIAbilityLifecycleManager::CallAbilityLocked(const AbilityRequest &abilityRe return ERR_OK; } uiAbilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest); + if (uiAbilityRecord == nullptr) { + return INNER_ERR; + } uiAbilityRecord->SetOwnerMissionUserId(userId_); SetReceiverInfo(abilityRequest, uiAbilityRecord); } else { -- Gitee