Git Issue #15: Incorrect merge in adaptive_merge when the number of unique items is limited

This commit is contained in:
Ion Gaztañaga
2017-10-07 14:35:22 +02:00
parent 6cb4f456d1
commit fcf217b8ec
4 changed files with 12 additions and 2 deletions

View File

@@ -788,6 +788,14 @@ Many thanks to all boosters that have tested, reviewed and improved the library.
[section:release_notes Release Notes]
[section:release_notes_boost_1_66 Boost 1.66 Release]
* Fixed bug:
* [@https://github.com/boostorg/move/issues/15 Git Issue #15: ['"Incorrect merge in adaptive_merge when the number of unique items is limited'"]].
[endsect]
[section:release_notes_boost_1_65 Boost 1.65 Release]
* Fixed bug:

View File

@@ -2437,7 +2437,8 @@ void adaptive_merge_impl
//Not the minimum number of keys is not available on the first range, so fallback to rotations
if(collected != to_collect && collected < 4){
merge_bufferless(first, first+len1, first+len1+len2, comp);
merge_bufferless(first, first+collected, first+len1, comp);
merge_bufferless(first, first + len1, first + len1 + len2, comp);
return;
}

View File

@@ -69,6 +69,7 @@ bool test_random_shuffled(std::size_t const element_count, std::size_t const num
int main()
{
const std::size_t NIter = 100;
test_random_shuffled<order_move_type>(10001, 3, NIter);
test_random_shuffled<order_move_type>(10001, 65, NIter);
test_random_shuffled<order_move_type>(10001, 101, NIter);
test_random_shuffled<order_move_type>(10001, 1023, NIter);

View File

@@ -16,7 +16,6 @@
#include <boost/move/unique_ptr.hpp>
#include <boost/container/vector.hpp>
#include <boost/timer/timer.hpp>
#include "order_type.hpp"
#include "random_shuffle.hpp"
@@ -63,6 +62,7 @@ bool test_random_shuffled(std::size_t const element_count, std::size_t const num
int main()
{
const std::size_t NIter = 100;
test_random_shuffled<order_move_type>(10001, 3, NIter);
test_random_shuffled<order_move_type>(10001, 65, NIter);
test_random_shuffled<order_move_type>(10001, 101, NIter);
test_random_shuffled<order_move_type>(10001, 1023, NIter);