Fix string_ref::find/rfind's handling of empty strings. Thanks to 'reluctantbugreporter' for the bug report

This commit is contained in:
Marshall Clow
2018-09-14 09:48:13 -07:00
parent 3d2a7f0c17
commit db05c11f50
3 changed files with 10 additions and 0 deletions

View File

@@ -181,6 +181,7 @@ namespace boost {
}
size_type find(basic_string_ref s) const {
if (s.empty()) return 0;
const_iterator iter = std::search ( this->cbegin (), this->cend (),
s.cbegin (), s.cend (), traits::eq );
return iter == this->cend () ? npos : std::distance ( this->cbegin (), iter );
@@ -193,6 +194,7 @@ namespace boost {
}
size_type rfind(basic_string_ref s) const {
if (s.empty()) return 0;
const_reverse_iterator iter = std::search ( this->crbegin (), this->crend (),
s.crbegin (), s.crend (), traits::eq );
return iter == this->crend () ? npos : (std::distance(iter, this->crend()) - s.size());