diff --git a/include/stdex/parser.hpp b/include/stdex/parser.hpp index 872464cd8..bbe780a36 100644 --- a/include/stdex/parser.hpp +++ b/include/stdex/parser.hpp @@ -832,7 +832,7 @@ namespace stdex stdex_assert(text || start >= end); size_t m = m_str.size(), - n = std::min(end - start, m); + n = start < end ? std::min(end - start, m) : 0; bool r = ((flags & match_case_insensitive) ? stdex::strnicmp(&text[start], n, m_str.data(), m, this->m_locale) : stdex::strncmp(&text[start], n, m_str.data(), m)) == 0; @@ -4527,6 +4527,7 @@ namespace stdex m_rparenthesis->invalidate(); if (m_plus_sign && m_plus_sign->match(text, this->interval.end, end, flags)) { + stdex_assert(text || m_plus_sign->interval.start >= m_plus_sign->interval.end); value.append(&text[m_plus_sign->interval.start], &text[m_plus_sign->interval.end]); safe_value_size = value.size(); this->interval.end = m_plus_sign->interval.end;