aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2015-05-30 12:44:02 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2015-05-30 12:44:02 +0100
commit12fc64ac3a49bcd0bab8f18fbff08f58992d3942 (patch)
tree6f6e8369e567de7fd8c5c20ad4411ab2710e9574 /libstdc++-v3
parent7d21a61eb5c0a7d12fa4b2bf2dfcb5ca7398a5bb (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/stl_algobase.h19
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;
}
};