diff options
Diffstat (limited to 'libstdc++-v3/bits/string.tcc')
| -rw-r--r-- | libstdc++-v3/bits/string.tcc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libstdc++-v3/bits/string.tcc b/libstdc++-v3/bits/string.tcc index d727151bd72..85179513548 100644 --- a/libstdc++-v3/bits/string.tcc +++ b/libstdc++-v3/bits/string.tcc @@ -634,14 +634,14 @@ namespace std size_type __size = this->size(); if (__n <= __size) { - size_t __xpos = __size - __n; - if (__xpos > __pos) - __xpos = __pos; - - for (++__xpos; __xpos-- > 0; ) - if (traits_type::eq(_M_data()[__xpos], *__s) - && traits_type::compare(_M_data() + __xpos, __s, __n) == 0) - return __xpos; + __pos = std::min(__size - __n ,__pos); + const _CharT* __data = _M_data(); + do + { + if (traits_type::compare(__data + __pos, __s, __n) == 0) + return __pos; + } + while (__pos-- > 0); } return npos; } |

