mirror of
https://github.com/boostorg/container.git
synced 2025-07-31 04:57:16 +02:00
Fixes #261 ('"End iterators are not dereferencable")
This commit is contained in:
@ -342,9 +342,11 @@ void flat_tree_sort_contiguous_to_adopt // is_contiguous_container == true
|
|||||||
tseq.clear();
|
tseq.clear();
|
||||||
const bool use_tseq_storage = tseq_unused_storage_size > seq_unused_storage_size;
|
const bool use_tseq_storage = tseq_unused_storage_size > seq_unused_storage_size;
|
||||||
|
|
||||||
|
value_type * const seq_beg = boost::movelib::iterator_to_raw_pointer(seq.data());
|
||||||
|
|
||||||
boost::movelib::adaptive_sort
|
boost::movelib::adaptive_sort
|
||||||
( boost::movelib::iterator_to_raw_pointer(seq.begin())
|
( seq_beg
|
||||||
, boost::movelib::iterator_to_raw_pointer(seq.end())
|
, seq_beg + seq.size()
|
||||||
, comp
|
, comp
|
||||||
, use_tseq_storage ? tseq_unused_storage_addr : seq_unused_storage_addr
|
, use_tseq_storage ? tseq_unused_storage_addr : seq_unused_storage_addr
|
||||||
, use_tseq_storage ? tseq_unused_storage_size : seq_unused_storage_size);
|
, use_tseq_storage ? tseq_unused_storage_size : seq_unused_storage_size);
|
||||||
@ -375,9 +377,11 @@ template<class SequenceContainer, class Compare>
|
|||||||
void flat_tree_adopt_sequence_unique// is_contiguous_container == true
|
void flat_tree_adopt_sequence_unique// is_contiguous_container == true
|
||||||
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp, dtl::true_)
|
(SequenceContainer &tseq, BOOST_RV_REF(SequenceContainer) seq, Compare comp, dtl::true_)
|
||||||
{
|
{
|
||||||
|
typedef typename SequenceContainer::value_type value_type;
|
||||||
|
value_type * const seq_beg = boost::movelib::iterator_to_raw_pointer(seq.data());
|
||||||
boost::movelib::pdqsort
|
boost::movelib::pdqsort
|
||||||
( boost::movelib::iterator_to_raw_pointer(seq.begin())
|
( seq_beg
|
||||||
, boost::movelib::iterator_to_raw_pointer(seq.end())
|
, seq_beg + seq.size()
|
||||||
, comp);
|
, comp);
|
||||||
seq.erase(boost::movelib::unique
|
seq.erase(boost::movelib::unique
|
||||||
(seq.begin(), seq.end(), boost::movelib::negate<Compare>(comp)), seq.cend());
|
(seq.begin(), seq.end(), boost::movelib::negate<Compare>(comp)), seq.cend());
|
||||||
|
Reference in New Issue
Block a user