diff --git a/frameworks/ets/ani/app_startup/startup_manager/src/ets_startup_manager.cpp b/frameworks/ets/ani/app_startup/startup_manager/src/ets_startup_manager.cpp index a7a687c7b9..47e34f13e5 100644 --- a/frameworks/ets/ani/app_startup/startup_manager/src/ets_startup_manager.cpp +++ b/frameworks/ets/ani/app_startup/startup_manager/src/ets_startup_manager.cpp @@ -211,10 +211,15 @@ int32_t ETSStartupManager::GetStartupTaskManager(ani_env *env, ani_object startu return ERR_STARTUP_INVALID_VALUE; } std::shared_ptr config; - int32_t result = GetConfig(env, startupConfig, config); - if (result != ERR_OK) { - TAG_LOGE(AAFwkTag::STARTUP, "get config failed"); - return result; + ani_boolean isConfigUndefined = ANI_TRUE; + env->Reference_IsUndefined(reinterpret_cast(startupConfig), &isConfigUndefined); + int32_t result = ERR_OK; + if (!isConfigUndefined) { + result = GetConfig(env, startupConfig, config); + if (result != ERR_OK) { + TAG_LOGE(AAFwkTag::STARTUP, "get config failed"); + return result; + } } bool supportFeatureModule = isDefaultContext != ANI_TRUE; result = DelayedSingleton::GetInstance()->BuildAppStartupTaskManager(dependencies, diff --git a/frameworks/native/appkit/app_startup/ets_startup_config.cpp b/frameworks/native/appkit/app_startup/ets_startup_config.cpp index 233c665688..38869ce90c 100644 --- a/frameworks/native/appkit/app_startup/ets_startup_config.cpp +++ b/frameworks/native/appkit/app_startup/ets_startup_config.cpp @@ -97,6 +97,12 @@ int32_t ETSStartupConfig::Init(ani_object config) TAG_LOGE(AAFwkTag::STARTUP, "null config"); return ERR_STARTUP_INTERNAL_ERROR; } + ani_boolean isUndefined = ANI_TRUE; + env->Reference_IsUndefined(reinterpret_cast(config), &isUndefined); + if (isUndefined) { + TAG_LOGE(AAFwkTag::STARTUP, "undefined config"); + return ERR_STARTUP_INTERNAL_ERROR; + } InitAwaitTimeout(env, config); InitListener(env, config); @@ -141,6 +147,10 @@ bool ETSStartupConfig::GetTimeoutMs(ani_env *env, ani_object config, int32_t &ti TAG_LOGE(AAFwkTag::STARTUP, "null env"); return false; } + if (config == nullptr) { + TAG_LOGE(AAFwkTag::STARTUP, "null config"); + return false; + } ani_status status = env->FindClass("@ohos.app.appstartup.StartupConfig.StartupConfig", &cls); if (status != ANI_OK || cls == nullptr) { TAG_LOGE(AAFwkTag::STARTUP, "Findclass failed, status: %{public}d", status); diff --git a/frameworks/native/appkit/app_startup/startup_manager.cpp b/frameworks/native/appkit/app_startup/startup_manager.cpp index 4cbad78675..c6e02ed426 100644 --- a/frameworks/native/appkit/app_startup/startup_manager.cpp +++ b/frameworks/native/appkit/app_startup/startup_manager.cpp @@ -190,7 +190,9 @@ int32_t StartupManager::BuildAutoAppStartupTaskManager(std::shared_ptr(startupTaskManagerId, autoStartupTasks); - startupTaskManager->SetConfig(startupConfig); + if (startupConfig != nullptr) { + startupTaskManager->SetConfig(startupConfig); + } startupTaskManagerMap_.emplace(startupTaskManagerId, startupTaskManager); startupTaskManagerId++; return ERR_OK; @@ -288,7 +290,9 @@ int32_t StartupManager::BuildAppStartupTaskManager(const std::vector(startupTaskManagerId, currentStartupTasks); - startupTaskManager->SetConfig(defaultConfig_); + if (defaultConfig_ != nullptr) { + startupTaskManager->SetConfig(defaultConfig_); + } startupTaskManagerMap_.emplace(startupTaskManagerId, startupTaskManager); startupTaskManagerId++; return ERR_OK;