Fixes #206 ("operator-> on static_vector::iterator causes cast alignment warning")

This commit is contained in:
Ion Gaztañaga committed 2021-12-28 15:17:15 +01:00
1 parent ea3521bf14
commit 3f76f9fdf7
23 files changed
+124 -93

No files matched your search

@@ -33,6 +33,7 @@
#include <boost/container/detail/placement_new.hpp>
#include <boost/container/detail/mpl.hpp>
#include <boost/move/detail/to_raw_pointer.hpp>
#include <boost/move/detail/force_ptr.hpp>
#include <boost/container/detail/type_traits.hpp>
// intrusive
#include <boost/intrusive/pointer_traits.hpp>
@@ -540,7 +541,7 @@ class private_adaptive_node_pool_impl_common
BOOST_ASSERT(hdr_off_holder->hdr_offset == offset);
BOOST_ASSERT(0 == (reinterpret_cast<std::size_t>(hdr_off_holder) & (real_block_alignment - 1)));
BOOST_ASSERT(0 == (hdr_off_holder->hdr_offset & (real_block_alignment - 1)));
hdr_off_holder = reinterpret_cast<hdr_offset_holder *>(reinterpret_cast<char*>(hdr_off_holder) + real_block_alignment);
hdr_off_holder = move_detail::force_ptr<hdr_offset_holder *>(reinterpret_cast<char*>(hdr_off_holder) + real_block_alignment);
}
}
}
@@ -563,7 +564,7 @@ class private_adaptive_node_pool_impl_common
hdr_offset_holder *priv_first_subblock_from_block(block_info_t *block, const size_type num_subblocks, const size_type real_block_alignment, AlignOnlyFalse) const
{
hdr_offset_holder *const hdr_off_holder = reinterpret_cast<hdr_offset_holder*>
hdr_offset_holder *const hdr_off_holder = move_detail::force_ptr<hdr_offset_holder*>
(reinterpret_cast<char*>(block) - (num_subblocks-1)*real_block_alignment);
BOOST_ASSERT(hdr_off_holder->hdr_offset == size_type(reinterpret_cast<char*>(block) - reinterpret_cast<char*>(hdr_off_holder)));
BOOST_ASSERT(0 == ((std::size_t)hdr_off_holder & (real_block_alignment - 1)));
@@ -574,7 +575,7 @@ class private_adaptive_node_pool_impl_common
hdr_offset_holder *priv_first_subblock_from_block(block_info_t *block, const size_type num_subblocks, const size_type real_block_alignment, AlignOnlyTrue) const
{
(void)num_subblocks; (void)real_block_alignment;
return reinterpret_cast<hdr_offset_holder*>(block);
return move_detail::force_ptr<hdr_offset_holder*>(block);
}
void priv_deallocate_free_blocks_impl( const size_type max_free_blocks, const size_type real_num_node
@@ -903,7 +904,7 @@ class private_adaptive_node_pool_impl_common
reinterpret_cast<hdr_offset_holder*>((std::size_t)node & size_type(~(real_block_alignment - 1)));
BOOST_ASSERT(0 == ((std::size_t)hdr_off_holder & (real_block_alignment - 1)));
BOOST_ASSERT(0 == (hdr_off_holder->hdr_offset & (real_block_alignment - 1)));
block_info_t *block = reinterpret_cast<block_info_t *>
block_info_t *block = move_detail::force_ptr<block_info_t *>
(reinterpret_cast<char*>(hdr_off_holder) + hdr_off_holder->hdr_offset);
BOOST_ASSERT(block->hdr_offset == 0);
return block;