diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index be44692bd8..905e337e7d 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -87,9 +87,14 @@ bool ProcessTask::_run() Rect rect; std::shared_ptr cur_task_ptr = nullptr; + auto front_task_ptr = Task.get(m_cur_tasks_name.front()); + // 可能有配置错误,导致不存在对应的任务 + if (front_task_ptr == nullptr) { + Log.error("Invalid task", m_cur_tasks_name.front()); + return false; + } // 如果第一个任务是JustReturn的,那就没必要再截图并计算了 - if (auto front_task_ptr = Task.get(m_cur_tasks_name.front()); - front_task_ptr->algorithm == AlgorithmType::JustReturn) { + if (front_task_ptr->algorithm == AlgorithmType::JustReturn) { cur_task_ptr = front_task_ptr; } else { diff --git a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp index 4230644a7a..2a008f105c 100644 --- a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp +++ b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp @@ -98,6 +98,11 @@ bool asst::ProcessTaskImageAnalyzer::analyze() for (const std::string& task_name : m_tasks_name) { auto task_ptr = Task.get(task_name); + // 可能有配置错误,导致不存在对应的任务 + if (task_ptr == nullptr) { + Log.error("Invalid task", task_name); + continue; + } switch (task_ptr->algorithm) { case AlgorithmType::JustReturn: