PR libstdc++/31401 (vstring bits)
authorPaolo Carlini <pcarlini@suse.de>
Mon, 2 Apr 2007 10:08:50 +0000 (10:08 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 2 Apr 2007 10:08:50 +0000 (10:08 +0000)
2007-04-02  Paolo Carlini  <pcarlini@suse.de>

PR libstdc++/31401 (vstring bits)
* include/ext/vstring.tcc (find(const _CharT*, size_type,
size_type)): Avoid unsigned overflow.

From-SVN: r123422

libstdc++-v3/ChangeLog
libstdc++-v3/include/ext/vstring.tcc

index 62bbca9db3308b5e06e354a7364888a09ffa9fc4..20075523a99064903b388c3a3219d6a793d6badd 100644 (file)
@@ -1,3 +1,9 @@
+2007-04-02  Paolo Carlini  <pcarlini@suse.de>
+
+       PR libstdc++/31401 (vstring bits)
+       * include/ext/vstring.tcc (find(const _CharT*, size_type,
+       size_type)): Avoid unsigned overflow.
+
 2007-04-02  Paolo Carlini  <pcarlini@suse.de>
 
        * include/bits/locale_facets.tcc (num_put<>::do_put(iter_type,
index 69dd5f04faa2c76f3f1136ec72f5b2e9e48db993..43467a5ad57e551ebe763cb36e5e49a210820d82 100644 (file)
@@ -279,7 +279,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
 
       if (__n <= __size)
        {
-         for (; __pos + __n <= __size; ++__pos)
+         for (; __pos <= __size - __n; ++__pos)
            if (traits_type::eq(__data[__pos], __s[0])
                && traits_type::compare(__data + __pos + 1,
                                        __s + 1, __n - 1) == 0)