From ec6219fe139bae899bcf2d53c152ea79c7751474 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 12 Sep 2012 21:09:39 +0000 Subject: [PATCH] Unordered: Fix incorrect assertion. [SVN r80508] --- include/boost/unordered/detail/equivalent.hpp | 2 +- include/boost/unordered/detail/unique.hpp | 2 +- test/unordered/insert_tests.cpp | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/include/boost/unordered/detail/equivalent.hpp b/include/boost/unordered/detail/equivalent.hpp index d67ab142..2e55bec7 100644 --- a/include/boost/unordered/detail/equivalent.hpp +++ b/include/boost/unordered/detail/equivalent.hpp @@ -748,7 +748,7 @@ namespace boost { namespace unordered { namespace detail { // strong otherwise exception safety void rehash_impl(std::size_t num_buckets) { - BOOST_ASSERT(this->size_); + BOOST_ASSERT(this->buckets_); this->create_buckets(num_buckets); previous_pointer prev = this->get_previous_start(); diff --git a/include/boost/unordered/detail/unique.hpp b/include/boost/unordered/detail/unique.hpp index 3aba72d7..bd3c63cd 100644 --- a/include/boost/unordered/detail/unique.hpp +++ b/include/boost/unordered/detail/unique.hpp @@ -636,7 +636,7 @@ namespace boost { namespace unordered { namespace detail { // strong otherwise exception safety void rehash_impl(std::size_t num_buckets) { - BOOST_ASSERT(this->size_); + BOOST_ASSERT(this->buckets_); this->create_buckets(num_buckets); previous_pointer prev = this->get_previous_start(); diff --git a/test/unordered/insert_tests.cpp b/test/unordered/insert_tests.cpp index 2f063161..c167e0ee 100644 --- a/test/unordered/insert_tests.cpp +++ b/test/unordered/insert_tests.cpp @@ -229,6 +229,24 @@ void insert_tests2(X*, test::random_generator generator) test::check_equivalent_keys(x); } + std::cerr<<"insert range with rehash tests.\n"; + + { + test::check_instances check_; + + X x; + + test::random_values v(1000, generator); + + x.insert(*v.begin()); + x.clear(); + + x.insert(v.begin(), v.end()); + + test::check_container(x, v); + test::check_equivalent_keys(x); + } + std::cerr<<"insert input iterator range tests.\n"; {