diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-05-30 12:44:02 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-05-30 12:44:02 +0100 |
commit | 12fc64ac3a49bcd0bab8f18fbff08f58992d3942 (patch) | |
tree | 6f6e8369e567de7fd8c5c20ad4411ab2710e9574 /libstdc++-v3 | |
parent | 7d21a61eb5c0a7d12fa4b2bf2dfcb5ca7398a5bb (diff) | |
download | gcc-12fc64ac3a49bcd0bab8f18fbff08f58992d3942.zip gcc-12fc64ac3a49bcd0bab8f18fbff08f58992d3942.tar.gz gcc-12fc64ac3a49bcd0bab8f18fbff08f58992d3942.tar.bz2 |
stl_algobase.h (__equal<true>::equal): Check length instead of checking for null pointers.
* include/bits/stl_algobase.h (__equal<true>::equal): Check length
instead of checking for null pointers.
(__lexicographical_compare<true>::__lc): Only check shorter length.
From-SVN: r223886
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/stl_algobase.h | 19 |
2 files changed, 12 insertions, 13 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c7b3b2d..19a4c14 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2015-05-30 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/stl_algobase.h (__equal<true>::equal): Check length + instead of checking for null pointers. + (__lexicographical_compare<true>::__lc): Only check shorter length. + 2015-05-29 François Dumont fdumont@gcc.gnu.org> * include/debug/debug.h (_GLIBCXX_DEBUG_ASSERT, diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index db065e2..12eb7ec 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -812,11 +812,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION static bool equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) { - if (__first1 == 0 || __first2 == 0) - return __first1 == __last1; - - return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) - * (__last1 - __first1)); + if (const size_t __len = (__last1 - __first1)) + return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); + return true; } }; @@ -920,14 +918,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { const size_t __len1 = __last1 - __first1; const size_t __len2 = __last2 - __first2; - if (__len1 && __len2) - { - if (int __result = __builtin_memcmp(__first1, __first2, - std::min(__len1, __len2))) - { - return __result < 0; - } - } + if (const size_t __len = std::min(__len1, __len2)) + if (int __result = __builtin_memcmp(__first1, __first2, __len)) + return __result < 0; return __len1 < __len2; } }; |