mirror of
https://github.com/boostorg/function.git
synced 2025-07-30 04:47:14 +02:00
Merge pull request #15 from podusowski/fix-aliasing-issue
use char type directly to avoid invalid aliasing
This commit is contained in:
@ -992,7 +992,9 @@ namespace boost {
|
|||||||
if (!f.empty()) {
|
if (!f.empty()) {
|
||||||
this->vtable = f.vtable;
|
this->vtable = f.vtable;
|
||||||
if (this->has_trivial_copy_and_destroy())
|
if (this->has_trivial_copy_and_destroy())
|
||||||
this->functor = f.functor;
|
// Don't operate on storage directly since union type doesn't relax
|
||||||
|
// strict aliasing rules, despite of having member char type.
|
||||||
|
std::memcpy(this->functor.data, f.functor.data, sizeof(this->functor.data));
|
||||||
else
|
else
|
||||||
get_vtable()->base.manager(f.functor, this->functor,
|
get_vtable()->base.manager(f.functor, this->functor,
|
||||||
boost::detail::function::move_functor_tag);
|
boost::detail::function::move_functor_tag);
|
||||||
|
Reference in New Issue
Block a user