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
This commit is contained in:
parent
7d21a61eb5
commit
12fc64ac3a
|
@ -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>
|
2015-05-29 François Dumont fdumont@gcc.gnu.org>
|
||||||
|
|
||||||
* include/debug/debug.h (_GLIBCXX_DEBUG_ASSERT,
|
* include/debug/debug.h (_GLIBCXX_DEBUG_ASSERT,
|
||||||
|
|
|
@ -812,11 +812,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
static bool
|
static bool
|
||||||
equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
|
equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
|
||||||
{
|
{
|
||||||
if (__first1 == 0 || __first2 == 0)
|
if (const size_t __len = (__last1 - __first1))
|
||||||
return __first1 == __last1;
|
return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len);
|
||||||
|
return true;
|
||||||
return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
|
|
||||||
* (__last1 - __first1));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -920,14 +918,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
{
|
{
|
||||||
const size_t __len1 = __last1 - __first1;
|
const size_t __len1 = __last1 - __first1;
|
||||||
const size_t __len2 = __last2 - __first2;
|
const size_t __len2 = __last2 - __first2;
|
||||||
if (__len1 && __len2)
|
if (const size_t __len = std::min(__len1, __len2))
|
||||||
{
|
if (int __result = __builtin_memcmp(__first1, __first2, __len))
|
||||||
if (int __result = __builtin_memcmp(__first1, __first2,
|
|
||||||
std::min(__len1, __len2)))
|
|
||||||
{
|
|
||||||
return __result < 0;
|
return __result < 0;
|
||||||
}
|
|
||||||
}
|
|
||||||
return __len1 < __len2;
|
return __len1 < __len2;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue