On Sat, May 30, 2015 at 8:13 PM, Marshall Clow <[email protected]> wrote:
> Author: marshall > Date: Sat May 30 22:13:31 2015 > New Revision: 238666 > > URL: http://llvm.org/viewvc/llvm-project?rev=238666&view=rev > Log: > Don't try to memcpy zero bytes; sometimes the source pointer is NULL, and > that's UB. Thanks to Nuno Lopes for the catch. > > Modified: > libcxx/trunk/include/memory > > Modified: libcxx/trunk/include/memory > URL: > http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/memory?rev=238666&r1=238665&r2=238666&view=diff > > ============================================================================== > --- libcxx/trunk/include/memory (original) > +++ libcxx/trunk/include/memory Sat May 30 22:13:31 2015 > @@ -621,6 +621,8 @@ void* align(size_t alignment, size_t siz > #pragma GCC system_header > #endif > > +extern "C" int printf(const char * __restrict, ...); > + > Was this change intentional? > _LIBCPP_BEGIN_NAMESPACE_STD > > // addressof moved to <__functional_base> > @@ -1521,7 +1523,8 @@ struct _LIBCPP_TYPE_VIS_ONLY allocator_t > __construct_forward(allocator_type& __a, _Tp* __begin1, _Tp* > __end1, _Tp*& __begin2) > { > ptrdiff_t _Np = __end1 - __begin1; > - _VSTD::memcpy(__begin2, __begin1, _Np * sizeof(_Tp)); > + if (_Np > 0) > + _VSTD::memcpy(__begin2, __begin1, _Np * sizeof(_Tp)); > __begin2 += _Np; > } > > @@ -1549,7 +1552,8 @@ struct _LIBCPP_TYPE_VIS_ONLY allocator_t > { > typedef typename remove_const<_Tp>::type _Vp; > ptrdiff_t _Np = __end1 - __begin1; > - _VSTD::memcpy(const_cast<_Vp*>(__begin2), __begin1, _Np * > sizeof(_Tp)); > + if (_Np > 0) > + _VSTD::memcpy(const_cast<_Vp*>(__begin2), __begin1, _Np * > sizeof(_Tp)); > __begin2 += _Np; > } > > @@ -1580,7 +1584,8 @@ struct _LIBCPP_TYPE_VIS_ONLY allocator_t > { > ptrdiff_t _Np = __end1 - __begin1; > __end2 -= _Np; > - _VSTD::memcpy(__end2, __begin1, _Np * sizeof(_Tp)); > + if (_Np > 0) > + _VSTD::memcpy(__end2, __begin1, _Np * sizeof(_Tp)); > } > > private: > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
