From 5527be59f4f6621b8e99ecf13ed3a3126576b87f Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 5 Sep 2006 17:38:44 +0000 Subject: [PATCH] basic_string.tcc (find(const _CharT*, size_type, size_type)): Robustify. 2006-09-05 Paolo Carlini * include/bits/basic_string.tcc (find(const _CharT*, size_type, size_type)): Robustify. * include/ext/vstring.tcc (find(const _CharT*, size_type, size_type)): Likewise. From-SVN: r116700 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/include/bits/basic_string.tcc | 12 ++++++++---- libstdc++-v3/include/ext/vstring.tcc | 12 ++++++++---- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6397850f3c04..5250cccdcf09 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2006-09-05 Paolo Carlini + + * include/bits/basic_string.tcc (find(const _CharT*, size_type, + size_type)): Robustify. + * include/ext/vstring.tcc (find(const _CharT*, size_type, + size_type)): Likewise. + 2006-09-05 Paolo Carlini * include/bits/basic_string.tcc (find(const _CharT*, size_type, diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 048d0cedc5ac..4cf5f29ad36d 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -716,10 +716,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) if (__n == 0) return __pos <= __size ? __pos : npos; - for (; __pos + __n <= __size; ++__pos) - if (traits_type::eq(__data[__pos], __s[0]) - && traits_type::compare(__data + __pos + 1, __s + 1, __n - 1) == 0) - return __pos; + if (__n <= __size) + { + for (; __pos + __n <= __size; ++__pos) + if (traits_type::eq(__data[__pos], __s[0]) + && traits_type::compare(__data + __pos + 1, + __s + 1, __n - 1) == 0) + return __pos; + } return npos; } diff --git a/libstdc++-v3/include/ext/vstring.tcc b/libstdc++-v3/include/ext/vstring.tcc index 5196d10c6d9c..2a880d99734c 100644 --- a/libstdc++-v3/include/ext/vstring.tcc +++ b/libstdc++-v3/include/ext/vstring.tcc @@ -277,10 +277,14 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) if (__n == 0) return __pos <= __size ? __pos : npos; - for (; __pos + __n <= __size; ++__pos) - if (traits_type::eq(__data[__pos], __s[0]) - && traits_type::compare(__data + __pos + 1, __s + 1, __n - 1) == 0) - return __pos; + if (__n <= __size) + { + for (; __pos + __n <= __size; ++__pos) + if (traits_type::eq(__data[__pos], __s[0]) + && traits_type::compare(__data + __pos + 1, + __s + 1, __n - 1) == 0) + return __pos; + } return npos; }