diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2017-01-24 12:00:47 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2017-01-24 12:00:47 +0000 |
commit | 8cb7179d24d1c560dd47c68235f7de091958a553 (patch) | |
tree | 36a1d986ffb61b8b8ee0ffd12808b57195063e5a | |
parent | cf157d80bcabad6601c232fa31cf79a022542fe6 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/experimental/string_view | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/std/string_view | 6 |
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 |