diff --git a/frameworks/src/background_task_manager.cpp b/frameworks/src/background_task_manager.cpp index 366f037f3f815009f240ded3ac61ed89bafec4e0..7b3d76dc9fe37d897f1c8e9878772daf3ec1506e 100644 --- a/frameworks/src/background_task_manager.cpp +++ b/frameworks/src/background_task_manager.cpp @@ -367,6 +367,7 @@ ErrCode BackgroundTaskManager::GetEfficiencyResourcesInfos(std::vector lock(mutex_); if (proxy_ != nullptr) { return true; } diff --git a/services/BUILD.gn b/services/BUILD.gn index ee01af71628107db5d487adb8ad29ae23c7e4ef1..0b835eae794398c2f06ce89358b52b78d948a7d9 100644 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -57,6 +57,7 @@ BgTaskMgrServicecSrc = [ ] ohos_shared_library("bgtaskmgr_service") { + configs = [ "//build/config/compiler:exceptions" ] branch_protector_ret = "pac_ret" sanitize = { cfi = true @@ -141,6 +142,7 @@ ohos_shared_library("bgtaskmgr_service") { } ohos_static_library("bgtaskmgr_service_static") { + configs = [ "//build/config/compiler:exceptions" ] cflags_cc = [ "-DBGTASK_MGR_UNIT_TEST" ] sources = BgTaskMgrServicecSrc diff --git a/services/common/src/data_storage_helper.cpp b/services/common/src/data_storage_helper.cpp index a6a888f8ae8874d76a7bb1e51e6585e2e977b87c..0a0f43b5c0f13123c01017a5ef8054cb2844f18b 100644 --- a/services/common/src/data_storage_helper.cpp +++ b/services/common/src/data_storage_helper.cpp @@ -71,7 +71,13 @@ ErrCode DataStorageHelper::RefreshTaskRecord(const std::unordered_mapsuspendState_) { + if (continuousTaskInfosMap_[taskInfoMapKey] != nullptr && continuousTaskInfosMap_[taskInfoMapKey]->suspendState_) { HandleActiveContinuousTask(continuousTaskRecord->uid_, continuousTaskRecord->pid_, taskInfoMapKey); } OnContinuousTaskChanged(iter->second, ContinuousTaskEventTriggerType::TASK_UPDATE); @@ -965,7 +965,8 @@ ErrCode BgContinuousTaskMgr::StartBackgroundRunningInner(std::shared_ptrbgModeIds_); } if (continuousTaskInfosMap_.find(taskInfoMapKey) != continuousTaskInfosMap_.end()) { - if (continuousTaskInfosMap_[taskInfoMapKey]->suspendState_) { + if (continuousTaskInfosMap_[taskInfoMapKey] != nullptr && + continuousTaskInfosMap_[taskInfoMapKey]->suspendState_) { HandleActiveContinuousTask(continuousTaskRecord->uid_, continuousTaskRecord->pid_, taskInfoMapKey); return ERR_OK; } @@ -1490,8 +1491,10 @@ void BgContinuousTaskMgr::HandleSuspendContinuousTask(int32_t uid, int32_t pid, break; } // 暂停状态取消长时任务通知 - NotificationTools::GetInstance()->CancelNotification(continuousTaskInfosMap_[key]->GetNotificationLabel(), - continuousTaskInfosMap_[key]->GetNotificationId()); + if (continuousTaskInfosMap_[key] != nullptr) { + NotificationTools::GetInstance()->CancelNotification(continuousTaskInfosMap_[key]->GetNotificationLabel(), + continuousTaskInfosMap_[key]->GetNotificationId()); + } // 对SA来说,暂停状态等同于取消 HandleAppContinuousTaskStop(uid); } diff --git a/services/continuous_task/src/continuous_task_record.cpp b/services/continuous_task/src/continuous_task_record.cpp index 143d3638ba9141edcdd914c85fc6070b31ddc9a2..fec161e1963a7e3d9e2df8b71f65aa2b8b635186 100644 --- a/services/continuous_task/src/continuous_task_record.cpp +++ b/services/continuous_task/src/continuous_task_record.cpp @@ -182,7 +182,13 @@ std::string ContinuousTaskRecord::ParseToJsonStr() root["isCombinedTaskNotification"] = isCombinedTaskNotification_; root["combinedNotificationTaskId"] = combinedNotificationTaskId_; root["isByRequestObject"] = isByRequestObject_; - return root.dump(CommonUtils::jsonFormat_); + std::string jsonStr = ""; + try { + jsonStr = root.dump(CommonUtils::jsonFormat_); + } catch (...) { + BGTASK_LOGE("failed to convert to string."); + } + return jsonStr; } bool CheckContinuousRecod(const nlohmann::json &value) diff --git a/services/efficiency_resources/src/resource_application_record.cpp b/services/efficiency_resources/src/resource_application_record.cpp index b3eada4e0540f799ae8abfbb4d47473f98f4f53c..30c279536656962f5bfeb6ae20727f72fe92112e 100644 --- a/services/efficiency_resources/src/resource_application_record.cpp +++ b/services/efficiency_resources/src/resource_application_record.cpp @@ -60,7 +60,13 @@ std::string ResourceApplicationRecord::ParseToJsonStr() { nlohmann::json root; ParseToJson(root); - return root.dump(CommonUtils::jsonFormat_); + std::string jsonStr = ""; + try { + jsonStr = root.dump(CommonUtils::jsonFormat_); + } catch (...) { + BGTASK_LOGE("failed to convert to string."); + } + return jsonStr; } void ResourceApplicationRecord::ParseToJson(nlohmann::json &root)