From a3c68c74e9190a3ff7180eefc650ebf7454cbd8e Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Mon, 17 Feb 2025 09:25:44 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20TaskData=E5=A2=9E=E5=8A=A0OcrTask?= =?UTF-8?q?=E7=9A=84ocrReplace=E5=90=88=E6=B3=95=E6=80=A7=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=20(#11878)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: TaskData增加OcrTask的ocrReplace合法性检查 * docs: 加点注释 --- src/MaaCore/Config/TaskData.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/MaaCore/Config/TaskData.cpp b/src/MaaCore/Config/TaskData.cpp index 2d54ae0f39..c9deba3d6f 100644 --- a/src/MaaCore/Config/TaskData.cpp +++ b/src/MaaCore/Config/TaskData.cpp @@ -2,6 +2,7 @@ #include #include +#include #ifdef ASST_DEBUG #include @@ -185,6 +186,20 @@ bool asst::TaskData::lazy_parse(const json::value& json) Log.error("Task", name, "with Count method has empty color_scales"); validity = false; } + // 用于解决 a8d68dd72df6eef1d2f8feed3883299922ec1a17 类似的潜在regex非法问题 + if (auto ocr_task = std::dynamic_pointer_cast(task); + task->algorithm == AlgorithmType::OcrDetect) { + for (const auto& [regex, new_str] : ocr_task->replace_map) { + try { + std::regex _(regex); + } + catch (const std::regex_error& e) { + Log.error("Task", name, "has invalid regex:", regex, ":", e.what()); + validity = false; + break; + } + } + } } if (checking_task_set.size() > MAX_CHECKING_SIZE) { // 生成超出上限一般是出现了会导致无限隐式生成的任务。比如 "#self@LoadingText". 这里给个警告.