mirror of git://gcc.gnu.org/git/gcc.git
PR libstdc++/70966 fix lifetime bug for default resource
PR libstdc++/70966 * include/experimental/memory_resource (__get_default_resource): Use placement new to create an object with dynamic storage duration. From-SVN: r262943
This commit is contained in:
parent
ffb164c7df
commit
0568ade6f8
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-07-24 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
PR libstdc++/70966
|
||||||
|
* include/experimental/memory_resource (__get_default_resource): Use
|
||||||
|
placement new to create an object with dynamic storage duration.
|
||||||
|
|
||||||
2018-07-23 Jonathan Wakely <jwakely@redhat.com>
|
2018-07-23 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
PR libstdc++/70940
|
PR libstdc++/70940
|
||||||
|
|
|
||||||
|
|
@ -459,12 +459,6 @@ namespace pmr {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Global memory resources
|
// Global memory resources
|
||||||
inline std::atomic<memory_resource*>&
|
|
||||||
__get_default_resource()
|
|
||||||
{
|
|
||||||
static atomic<memory_resource*> _S_default_resource(new_delete_resource());
|
|
||||||
return _S_default_resource;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline memory_resource*
|
inline memory_resource*
|
||||||
new_delete_resource() noexcept
|
new_delete_resource() noexcept
|
||||||
|
|
@ -499,6 +493,16 @@ namespace pmr {
|
||||||
}
|
}
|
||||||
|
|
||||||
// The default memory resource
|
// The default memory resource
|
||||||
|
|
||||||
|
inline std::atomic<memory_resource*>&
|
||||||
|
__get_default_resource()
|
||||||
|
{
|
||||||
|
using type = atomic<memory_resource*>;
|
||||||
|
alignas(type) static unsigned char __buf[sizeof(type)];
|
||||||
|
static type* __r = new(__buf) type(new_delete_resource());
|
||||||
|
return *__r;
|
||||||
|
}
|
||||||
|
|
||||||
inline memory_resource*
|
inline memory_resource*
|
||||||
get_default_resource() noexcept
|
get_default_resource() noexcept
|
||||||
{ return __get_default_resource().load(); }
|
{ return __get_default_resource().load(); }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue