summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/bits/string.tcc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/bits/string.tcc')
-rw-r--r--libstdc++-v3/bits/string.tcc16
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;
}
OpenPOWER on IntegriCloud