--- /dev/null 2021-12-11 11:24:33.892890000 -0500 +++ src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp 2021-12-10 13:34:33.000000000 -0500 @@ -0,0 +1,52 @@ +/* +Copyright 2014-2015 Glen Joseph Fernandes +(glenjofe@gmail.com) + +Distributed under the Boost Software License, Version 1.0. +(http://www.boost.org/LICENSE_1_0.txt) +*/ +#ifndef BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP +#define BOOST_ALIGN_DETAIL_ALIGNED_ALLOC_HPP + +#include +#include +#include +#include +#include + +namespace boost { +namespace alignment { + +inline void* +aligned_alloc(std::size_t alignment, std::size_t size) BOOST_NOEXCEPT +{ + BOOST_ASSERT(detail::is_alignment(alignment)); + enum { + N = alignment_of::value + }; + if (alignment < N) { + alignment = N; + } + std::size_t n = size + alignment - N; + void* p = std::malloc(sizeof(void*) + n); + if (p) { + void* r = static_cast(p) + sizeof(void*); + (void)boost::alignment::align(alignment, size, r, n); + *(static_cast(r) - 1) = p; + p = r; + } + return p; +} + +inline void +aligned_free(void* ptr) BOOST_NOEXCEPT +{ + if (ptr) { + std::free(*(static_cast(ptr) - 1)); + } +} + +} /* alignment */ +} /* boost */ + +#endif