aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2017-01-24 12:00:47 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2017-01-24 12:00:47 +0000
commit8cb7179d24d1c560dd47c68235f7de091958a553 (patch)
tree36a1d986ffb61b8b8ee0ffd12808b57195063e5a
parentcf157d80bcabad6601c232fa31cf79a022542fe6 (diff)
downloadgcc-8cb7179d24d1c560dd47c68235f7de091958a553.zip
gcc-8cb7179d24d1c560dd47c68235f7de091958a553.tar.gz
gcc-8cb7179d24d1c560dd47c68235f7de091958a553.tar.bz2
PR libstdc++/79206 check string_view sizes in operator==
PR libstdc++/79206 * include/experimental/string_view (operator==): Check sizes first. * include/std/string_view (operator==): Likewise. From-SVN: r244865
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/experimental/string_view6
-rw-r--r--libstdc++-v3/include/std/string_view6
3 files changed, 12 insertions, 6 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c89020e..24fc5ae 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-24 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/79206
+ * include/experimental/string_view (operator==): Check sizes first.
+ * include/std/string_view (operator==): Likewise.
+
2017-01-23 Jonathan Wakely <jwakely@redhat.com>
* testsuite/experimental/array/make_array.cc: Restore <functional>
diff --git a/libstdc++-v3/include/experimental/string_view b/libstdc++-v3/include/experimental/string_view
index eaff0cc..2a2364c 100644
--- a/libstdc++-v3/include/experimental/string_view
+++ b/libstdc++-v3/include/experimental/string_view
@@ -456,19 +456,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
inline bool
operator==(basic_string_view<_CharT, _Traits> __x,
basic_string_view<_CharT, _Traits> __y) noexcept
- { return __x.compare(__y) == 0; }
+ { return __x.size() == __y.size() && __x.compare(__y) == 0; }
template<typename _CharT, typename _Traits>
inline bool
operator==(basic_string_view<_CharT, _Traits> __x,
__detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
- { return __x.compare(__y) == 0; }
+ { return __x.size() == __y.size() && __x.compare(__y) == 0; }
template<typename _CharT, typename _Traits>
inline bool
operator==(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
basic_string_view<_CharT, _Traits> __y) noexcept
- { return __x.compare(__y) == 0; }
+ { return __x.size() == __y.size() && __x.compare(__y) == 0; }
template<typename _CharT, typename _Traits>
inline bool
diff --git a/libstdc++-v3/include/std/string_view b/libstdc++-v3/include/std/string_view
index 9eee528..a719185 100644
--- a/libstdc++-v3/include/std/string_view
+++ b/libstdc++-v3/include/std/string_view
@@ -453,19 +453,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
inline bool
operator==(basic_string_view<_CharT, _Traits> __x,
basic_string_view<_CharT, _Traits> __y) noexcept
- { return __x.compare(__y) == 0; }
+ { return __x.size() == __y.size() && __x.compare(__y) == 0; }
template<typename _CharT, typename _Traits>
inline bool
operator==(basic_string_view<_CharT, _Traits> __x,
__detail::__idt<basic_string_view<_CharT, _Traits>> __y) noexcept
- { return __x.compare(__y) == 0; }
+ { return __x.size() == __y.size() && __x.compare(__y) == 0; }
template<typename _CharT, typename _Traits>
inline bool
operator==(__detail::__idt<basic_string_view<_CharT, _Traits>> __x,
basic_string_view<_CharT, _Traits> __y) noexcept
- { return __x.compare(__y) == 0; }
+ { return __x.size() == __y.size() && __x.compare(__y) == 0; }
template<typename _CharT, typename _Traits>
inline bool