Fixed a problem that UBSAN found, where we were calling memcmp(null, p, 0) - which is undefined behavior

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@228952 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2015-02-12 19:58:06 +00:00
parent 451ae6e21c
commit 7f59a88431

View File

@@ -375,7 +375,7 @@ _LIBCPP_BEGIN_NAMESPACE_LFTS
_LIBCPP_CONSTEXPR_AFTER_CXX11 int compare(basic_string_view __sv) const _NOEXCEPT
{
size_type __rlen = _VSTD::min( size(), __sv.size());
int __retval = _Traits::compare(data(), __sv.data(), __rlen);
int __retval = __rlen == 0 ? 0 : _Traits::compare(data(), __sv.data(), __rlen);
if ( __retval == 0 ) // first __rlen chars matched
__retval = size() == __sv.size() ? 0 : ( size() < __sv.size() ? -1 : 1 );
return __retval;