$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: daniel_james_at_[hidden]
Date: 2008-04-18 06:27:50
Author: danieljames
Date: 2008-04-18 06:27:50 EDT (Fri, 18 Apr 2008)
New Revision: 44536
URL: http://svn.boost.org/trac/boost/changeset/44536
Log:
Check that hash_table_impl::swap isn't swapping with itself - which is causing the buffered functions to be set with the same value twice, resulting in an assertion.
Text files modified: 
   branches/unordered/trunk/boost/unordered/detail/hash_table_impl.hpp |     7 +++++++                                 
   1 files changed, 7 insertions(+), 0 deletions(-)
Modified: branches/unordered/trunk/boost/unordered/detail/hash_table_impl.hpp
==============================================================================
--- branches/unordered/trunk/boost/unordered/detail/hash_table_impl.hpp	(original)
+++ branches/unordered/trunk/boost/unordered/detail/hash_table_impl.hpp	2008-04-18 06:27:50 EDT (Fri, 18 Apr 2008)
@@ -1284,6 +1284,13 @@
 
             void swap(BOOST_UNORDERED_TABLE& x)
             {
+            	// The swap code can work when swapping a container with itself
+            	// but it triggers an assertion in buffered_functions.
+            	// At the moment, I'd rather leave that assertion in and add a
+            	// check here, rather than remove the assertion. I might change
+            	// this at a later date.
+            	if(this == &x) return;
+            
                 // These can throw, but they only affect the function objects
                 // that aren't in use so it is strongly exception safe, via.
                 // double buffering.