[Boost-bugs] [Boost C++ Libraries] #10353: Interprocess: rbtree_best_fit ABI change from 1.53 to 1.55

Subject: [Boost-bugs] [Boost C++ Libraries] #10353: Interprocess: rbtree_best_fit ABI change from 1.53 to 1.55
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-08-13 20:40:23


#10353: Interprocess: rbtree_best_fit ABI change from 1.53 to 1.55
------------------------------+------------------------------
 Reporter: Terence.Darwen@… | Type: Bugs
   Status: new | Milestone: To Be Determined
Component: None | Version: Boost 1.55.0
 Severity: Problem | Keywords:
------------------------------+------------------------------
 I have an issue that seems to be identical to the issue discussed in this
 thread on the Boost List: http://lists.boost.org/boost-
 users/2014/01/81159.php

 Basically, it seems the size of the Imultiset member in header_t of
 rbtree_best_fit.hpp has changed between Boost 1.53 and Boost 1.55. As
 mentioned in the thread from the Boost List:

>>
 boost::interprocess::rbtree_best_fit<boost::interprocess::null_mutex_family,boost::interprocess::offset_ptr<void,__int64,unsigned
 __int64,0>,0>
>>
>> has size = 56
>> member m_header.m_imultiset has size 32
>>
>> In code compiled with boost 1.55:
>>
>> the same type has size = 72
>> member m_header.m_imultiset has size 48
>
>
>Wow, that's too big. I think this is related with MSVC Empty Base
>Implementation behaviour. I refactored those classes to avoid redundant
>simple forwarding functions using inheritance and that broke this for
>MSVC compilers. I should add some checks for 32 and 64 bit compilers to
>guarantee the minimum size (16 bytes in 32 bit and 32 bytes in 64 bit).

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/10353>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:16 UTC