r268354 - in /trunk/libstdc++-v3: ChangeLog inc...

redi@gcc.gnu.org redi@gcc.gnu.org
Tue Jan 29 00:47:00 GMT 2019


Author: redi
Date: Tue Jan 29 00:47:25 2019
New Revision: 268354

URL: https://gcc.gnu.org/viewcvs?rev=268354&root=gcc&view=rev
Log:
Ensure pool resources always use normal mode vector

The __pool_resource::_M_unpooled member was declared with type
std::vector, which means that the type depends on whether debug mode is
active or not. Because the non-inline definitions in
src/c++17/memory_resource.cc are never compiled with debug mode, the
type declared in the header doesn't match the type in the library
definitions, leading to undefined behaviour.

The solution is to ensure the header always uses the non-debug vector,
even when debug mode is active. To make this easier a new alias template
is defined: _GLIBCXX_STD_C::pmr::vector.

	* include/std/memory_resource (__pool_resource::_M_unpooled): Use
	normal mode vector, even for debug mode.
	* include/std/vector [_GLIBCXX_DEBUG] (_GLIBCXX_STD_C::pmr::vector):
	Define alias template for normal mode vector.

Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/include/std/memory_resource
    trunk/libstdc++-v3/include/std/vector



More information about the Libstdc++-cvs mailing list