Index: boost/unordered/detail/buckets.hpp =================================================================== --- boost/unordered/detail/buckets.hpp (revision 80894) +++ boost/unordered/detail/buckets.hpp (working copy) @@ -892,7 +892,16 @@ { for(;;) { n = static_cast(n->next_); - if (n == end) return; + if (n == end) { + if (n) { + std::size_t new_bucket_index = + policy::to_bucket(bucket_count_, n->hash_); + if (bucket_index != new_bucket_index) { + get_bucket(new_bucket_index)->next_ = prev; + } + } + return; + } std::size_t new_bucket_index = policy::to_bucket(this->bucket_count_, n->hash_); Index: boost/unordered/detail/equivalent.hpp =================================================================== --- boost/unordered/detail/equivalent.hpp (revision 80894) +++ boost/unordered/detail/equivalent.hpp (working copy) @@ -722,9 +722,9 @@ if(begin == group2) { link_pointer end1 = group1->group_prev_; - link_pointer end2 = group2->group_prev_; + link_pointer end2 = end->group_prev_; group1->group_prev_ = end2; - group2->group_prev_ = end1; + end->group_prev_ = end1; } } }