• 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
..
cppunittester Loading commit data...
internal Loading commit data...
osl Loading commit data...
pch Loading commit data...
rtl Loading commit data...
sal Loading commit data...
systools/win32 Loading commit data...