• Stephan Bergmann's avatar
    rhbz#908674: Adapt rtl::Allocator::construct to C++11 · c91d3538
    Stephan Bergmann yazdı
    ...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 e5111574 "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.
    
    Change-Id: I3be22f59a8eb49d31458480c27f3ce15803c7fd4
    c91d3538
Adı
Son kayıt (commit)
Son güncelleme
..
.gitignore Loading commit data...
README Loading commit data...
config_clang.h.in Loading commit data...
config_global.h.in Loading commit data...
config_graphite.h.in Loading commit data...
config_telepathy.h.in Loading commit data...
config_vclplug.h.in Loading commit data...
config_version.h.in Loading commit data...