mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			Leave moved-from std::deque in a valid state
PR libstdc++/67707 * include/bits/stl_deque.h (_Deque_base::_M_move_impl): Initialize empty object. * testsuite/23_containers/deque/allocator/move.cc: Check moved-from deque. From-SVN: r228090
This commit is contained in:
		
							parent
							
								
									4f761179ed
								
							
						
					
					
						commit
						9bc5028273
					
				|  | @ -1,3 +1,11 @@ | |||
| 2015-09-24  Jonathan Wakely  <jwakely@redhat.com> | ||||
| 
 | ||||
| 	PR libstdc++/67707 | ||||
| 	* include/bits/stl_deque.h (_Deque_base::_M_move_impl): Initialize | ||||
| 	empty object. | ||||
| 	* testsuite/23_containers/deque/allocator/move.cc: Check moved-from | ||||
| 	deque. | ||||
| 
 | ||||
| 2015-09-23  Jonathan Wakely  <jwakely@redhat.com> | ||||
| 
 | ||||
| 	* src/filesystem/ops.cc (canonical): Simplify error handling and | ||||
|  |  | |||
|  | @ -644,6 +644,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER | |||
| 	_Tp_alloc_type __sink __attribute((__unused__)) {std::move(__alloc)}; | ||||
| 	// Create an empty map that allocates using the moved-from allocator.
 | ||||
| 	_Deque_base __empty{__alloc}; | ||||
| 	__empty._M_initialize_map(0); | ||||
| 	// Now safe to modify current allocator and perform non-throwing swaps.
 | ||||
| 	_Deque_impl __ret{std::move(_M_get_Tp_allocator())}; | ||||
| 	_M_impl._M_swap_data(__ret); | ||||
|  |  | |||
|  | @ -36,6 +36,11 @@ void test01() | |||
|   VERIFY(1 == v1.get_allocator().get_personality()); | ||||
|   VERIFY(1 == v2.get_allocator().get_personality()); | ||||
|   VERIFY( it == v2.begin() ); | ||||
| 
 | ||||
|   // PR libstdc++/67707
 | ||||
|   VERIFY( v1.size() == 0 ); | ||||
|   v1 = test_type(); | ||||
|   VERIFY( v1.size() == 0 ); | ||||
| } | ||||
| 
 | ||||
| void test02() | ||||
|  | @ -47,6 +52,11 @@ void test02() | |||
|   test_type v2(std::move(v1), alloc_type(2)); | ||||
|   VERIFY(1 == v1.get_allocator().get_personality()); | ||||
|   VERIFY(2 == v2.get_allocator().get_personality()); | ||||
| 
 | ||||
|   // PR libstdc++/67707
 | ||||
|   VERIFY( v1.size() == 0 ); | ||||
|   v1 = test_type(); | ||||
|   VERIFY( v1.size() == 0 ); | ||||
| } | ||||
| 
 | ||||
| int main() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Jonathan Wakely
						Jonathan Wakely