diff --git a/include/ctre/evaluation.hpp b/include/ctre/evaluation.hpp index e945eb0b..3b4b132d 100644 --- a/include/ctre/evaluation.hpp +++ b/include/ctre/evaluation.hpp @@ -97,7 +97,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { // TODO add support for different line ending and unicode (in a future unicode mode) - if (*current == '\n') return not_matched; + if (const auto c = *current; c == '\n' || c == '\r') return not_matched; } return evaluate(begin, ++current, last, consumed_something(f), captures, ctll::list()); } @@ -170,7 +170,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (last == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*current == '\n' && std::next(current) == last) { + } else if (const auto c = *current; (c == '\n' || c == '\r') && std::next(current) == last) { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; @@ -188,7 +188,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (begin == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*std::prev(current) == '\n') { + } else if (const auto c = *std::prev(current); c == '\n' || c == '\r') { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; @@ -206,7 +206,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (last == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*current == '\n') { + } else if (const auto c = *current; c == '\n' || c == '\r') { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; diff --git a/single-header/ctre-unicode.hpp b/single-header/ctre-unicode.hpp index da1db898..e697d8d6 100644 --- a/single-header/ctre-unicode.hpp +++ b/single-header/ctre-unicode.hpp @@ -4407,7 +4407,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { // TODO add support for different line ending and unicode (in a future unicode mode) - if (*current == '\n') return not_matched; + if (const auto c = *current; c == '\n' || c == '\r') return not_matched; } return evaluate(begin, ++current, last, consumed_something(f), captures, ctll::list()); } @@ -4480,7 +4480,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (last == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*current == '\n' && std::next(current) == last) { + } else if (const auto c = *current; (c == '\n' || c == '\r') && std::next(current) == last) { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; @@ -4498,7 +4498,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (begin == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*std::prev(current) == '\n') { + } else if (const auto c = *std::prev(current); c == '\n' || c == '\r') { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; @@ -4516,7 +4516,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (last == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*current == '\n') { + } else if (const auto c = *current; c == '\n' || c == '\r') { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; diff --git a/single-header/ctre.hpp b/single-header/ctre.hpp index 41750e34..c27c2d90 100644 --- a/single-header/ctre.hpp +++ b/single-header/ctre.hpp @@ -4404,7 +4404,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { // TODO add support for different line ending and unicode (in a future unicode mode) - if (*current == '\n') return not_matched; + if (const auto c = *current; c == '\n' || c == '\r') return not_matched; } return evaluate(begin, ++current, last, consumed_something(f), captures, ctll::list()); } @@ -4477,7 +4477,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (last == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*current == '\n' && std::next(current) == last) { + } else if (const auto c = *current; (c == '\n' || c == '\r') && std::next(current) == last) { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; @@ -4495,7 +4495,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (begin == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*std::prev(current) == '\n') { + } else if (const auto c = *std::prev(current); c == '\n' || c == '\r') { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched; @@ -4513,7 +4513,7 @@ constexpr CTRE_FORCE_INLINE R evaluate(const BeginIterator begin, Iterator curre if (multiline_mode(f)) { if (last == current) { return evaluate(begin, current, last, f, captures, ctll::list()); - } else if (*current == '\n') { + } else if (const auto c = *current; c == '\n' || c == '\r') { return evaluate(begin, current, last, f, captures, ctll::list()); } else { return not_matched;