Opened 9 years ago

Closed 9 years ago

Last modified 6 years ago

#9092 closed Bugs (fixed)

Unique insertion with hint bug when inserting ordered non-unique sequence

Reported by: Ion Gaztañaga Owned by: Ion Gaztañaga
Milestone: Boost 1.55.0 Component: container
Version: Boost 1.54.0 Severity: Problem
Keywords: flat_tree insertion with hint Cc: benpope81@…

Description

As reported in http://permalink.gmane.org/gmane.comp.lib.boost.devel/243830, inserting an ordered non-unique sequence in flat_set provokes a crash. The problem lies in function

priv_insert_unique_prepare (const_iterator pos, const value_type& val, insert_commit_data &commit_data)

where an incorrect iterator is returned when the hint points to a one-past an equivalent element.

Change History (2)

comment:1 by Ion Gaztañaga, 9 years ago

Resolution: fixed
Status: newclosed

(In [85612]) Fixes #9092

comment:2 by anonymous, 6 years ago

Hello!

I got same problem in boost 1.48 and managed to write unit-test with fixed input sequence. Thought it would be good to put and adapt this unit-test in boost.

Code:

        TEST(BoostFlatSet, ShouldNotCrash_WithCopyAndInsert_OfOrderedNonUniqueSequence)
	{		
		std::vector<size_t> test_numbers = boost::assign::list_of(4)(6)(8)(11)(13)(18)(18)(24)(26)(28)(31)(33)(38);

		boost::container::flat_set<size_t> output; 
		EXPECT_NO_FATAL_FAILURE(boost::copy(test_numbers, std::inserter(output, output.end())));
	}

Thanks!

Roman Vlasov

Note: See TracTickets for help on using tickets.