diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2013-02-14 15:21:46 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.cz> | 2013-03-04 17:35:04 +0100 |
commit | b770d1f0a40688447fd452a139acb3c0c9e9d324 (patch) | |
tree | 8865b79dd72d856c179b762f55b8b28a9d65ee05 /config_host.mk.in | |
parent | cb46de27c62a36936a76fe07a30438521a769a8c (diff) |
rhbz#908674: Adapt rtl::Allocator::construct to C++11
...otherwise, at least with some --with-system-boost versions and C++11
compilers, like with Fedora's boost-1.50.0-4.fc18.x86_64 and
gcc-c++-4.7.2-8.fc18.x86_64, using this to copy-construct an instance of
boost::unordered::detail::ptr_node<std::pair<rtl::OUString,Bootstrap_Impl*>> in
the call to p_bootstrap_map->insert(...) in rtl_bootstrap_args_open
(sal/rtl/source/bootstrap.cxx) would memcopy the ptr_node and fail to call
rtl_uString_acquire, leading to memory corruption later on when
rtl_uString_release is called one time too often.
It is not entirely clear to me whether this is a shortcoming of the given Boost
version, but this patch solves the problem and brings rtl::Allocator::construct
in line with the (changed) Allocator requirements of C++11 anyway.
The problem potentially lurks with every use of rtl::Allocator, but only showed
now begining with LO 4.0 where e5111574fd904b38a3980ca4ea3d21cfcb22dea6 "Revert
'sb140: sb140: #i116981# clean up memory upon exit'" re-introduced code into
rtl_bootstrap_args_open that inserts into a boost::unordered_map that uses
rtl::Allocator.
(cherry picked from commit c91d353872b7d4e1a39192bff1444b46cab6e5eb)
Conflicts:
config_host/config_global.h.in
...solved by resorting to the old -DHAVE_CXX11_PERFECT_FORWARDING logic spread
across various solenv/.../*.mk instead.
(cherry picked from commit https://gerrit.libreoffice.org/#/c/2166/1)
Conflicts:
configure.ac
solenv/gbuild/platform/com_GCC_defs.mk
solenv/gbuild/platform/com_MSC_defs.mk
Change-Id: I3be22f59a8eb49d31458480c27f3ce15803c7fd4
Reviewed-on: https://gerrit.libreoffice.org/2167
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Miklos Vajna <vmiklos@suse.cz>
Diffstat (limited to 'config_host.mk.in')
-rw-r--r-- | config_host.mk.in | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/config_host.mk.in b/config_host.mk.in index 3997e7f71b2a..16d64f772329 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -201,6 +201,7 @@ export GUIBASE_FOR_BUILD=@GUIBASE_FOR_BUILD@ export GUI_FOR_BUILD=@GUI_FOR_BUILD@ export GXX_INCLUDE_PATH=@GXX_INCLUDE_PATH@ export HAVE_CXX0X=@HAVE_CXX0X@ +export HAVE_CXX11_PERFECT_FORWARDING=@HAVE_CXX11_PERFECT_FORWARDING@ export HAVE_GCC_AVX=@HAVE_GCC_AVX@ export HAVE_GCC_GGDB2=@HAVE_GCC_GGDB2@ export HAVE_GCC_FINLINE_LIMIT=@HAVE_GCC_FINLINE_LIMIT@ |