fix: 再次修复可能的数字识别崩溃问题

This commit is contained in:
MistEO
2022-12-25 03:53:32 +08:00
parent 4b6a7fb4a3
commit 0b871120ef
2 changed files with 8 additions and 6 deletions

View File

@@ -320,12 +320,13 @@ int asst::DepotImageAnalyzer::match_quantity(const Rect& roi)
digit_str.erase(m_pos, digit_str.size());
}
constexpr char Dot = '.';
if (digit_str.empty() ||
!ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == '.'; })) {
!ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == Dot; })) {
return 0;
}
if (auto dot_pos = digit_str.find('.'); dot_pos != std::string::npos) {
if (dot_pos == 0 || dot_pos == digit_str.size() - 1) {
if (auto dot_pos = digit_str.find(Dot); dot_pos != std::string::npos) {
if (dot_pos == 0 || dot_pos == digit_str.size() - 1 || digit_str.find(Dot, dot_pos + 1) != std::string::npos) {
return 0;
}
}

View File

@@ -553,12 +553,13 @@ int asst::StageDropsImageAnalyzer::match_quantity(const Rect& roi, bool use_word
digit_str.erase(k_pos, digit_str.size());
}
constexpr char Dot = '.';
if (digit_str.empty() ||
!ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == '.'; })) {
!ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == Dot; })) {
return 0;
}
if (auto dot_pos = digit_str.find('.'); dot_pos != std::string::npos) {
if (dot_pos == 0 || dot_pos == digit_str.size() - 1) {
if (auto dot_pos = digit_str.find(Dot); dot_pos != std::string::npos) {
if (dot_pos == 0 || dot_pos == digit_str.size() - 1 || digit_str.find(Dot, dot_pos + 1) != std::string::npos) {
return 0;
}
}