From ba590bdc97371cafb8767bbeb9e08373c25e71e4 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Thu, 19 Aug 2010 17:40:04 +0000 Subject: [PATCH] LWG 1278 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@111532 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/forward_list | 6 ++++-- .../forwardlist.modifiers/insert_after_init.pass.cpp | 4 ++-- .../forwardlist.modifiers/insert_after_range.pass.cpp | 4 ++-- .../forwardlist.modifiers/insert_after_size_value.pass.cpp | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/forward_list b/include/forward_list index 44d381ab..038d85d7 100644 --- a/include/forward_list +++ b/include/forward_list @@ -942,7 +942,7 @@ typename forward_list<_Tp, _Alloc>::iterator forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, size_type __n, const value_type& __v) { - __node_pointer const __r = const_cast<__node_pointer>(__p.__ptr_); + __node_pointer __r = const_cast<__node_pointer>(__p.__ptr_); if (__n > 0) { __node_allocator& __a = base::__alloc(); @@ -977,6 +977,7 @@ forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, size_type __n, #endif __last->__next_ = __r->__next_; __r->__next_ = __first; + __r = __last; } return iterator(__r); } @@ -991,7 +992,7 @@ typename enable_if forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, _InputIterator __f, _InputIterator __l) { - __node_pointer const __r = const_cast<__node_pointer>(__p.__ptr_); + __node_pointer __r = const_cast<__node_pointer>(__p.__ptr_); if (__f != __l) { __node_allocator& __a = base::__alloc(); @@ -1026,6 +1027,7 @@ forward_list<_Tp, _Alloc>::insert_after(const_iterator __p, #endif __last->__next_ = __r->__next_; __r->__next_ = __first; + __r = __last; } return iterator(__r); } diff --git a/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp b/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp index f924fe9b..211197f0 100644 --- a/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp +++ b/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_init.pass.cpp @@ -27,14 +27,14 @@ int main() assert(distance(c.begin(), c.end()) == 0); i = c.insert_after(c.cbefore_begin(), {0, 1, 2}); - assert(i == c.before_begin()); + assert(i == next(c.before_begin(), 3)); assert(distance(c.begin(), c.end()) == 3); assert(*next(c.begin(), 0) == 0); assert(*next(c.begin(), 1) == 1); assert(*next(c.begin(), 2) == 2); i = c.insert_after(c.begin(), {3, 4}); - assert(i == c.begin()); + assert(i == next(c.begin(), 2)); assert(distance(c.begin(), c.end()) == 5); assert(*next(c.begin(), 0) == 0); assert(*next(c.begin(), 1) == 3); diff --git a/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp b/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp index bf8a7311..f04fcc95 100644 --- a/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp +++ b/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_range.pass.cpp @@ -32,14 +32,14 @@ int main() assert(distance(c.begin(), c.end()) == 0); i = c.insert_after(c.cbefore_begin(), J(t), J(t+3)); - assert(i == c.before_begin()); + assert(i == next(c.before_begin(), 3)); assert(distance(c.begin(), c.end()) == 3); assert(*next(c.begin(), 0) == 0); assert(*next(c.begin(), 1) == 1); assert(*next(c.begin(), 2) == 2); i = c.insert_after(c.begin(), J(t+3), J(t+5)); - assert(i == c.begin()); + assert(i == next(c.begin(), 2)); assert(distance(c.begin(), c.end()) == 5); assert(*next(c.begin(), 0) == 0); assert(*next(c.begin(), 1) == 3); diff --git a/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp b/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp index 312c1462..89e4c736 100644 --- a/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp +++ b/test/containers/sequences/forwardlist/forwardlist.modifiers/insert_after_size_value.pass.cpp @@ -27,14 +27,14 @@ int main() assert(distance(c.begin(), c.end()) == 0); i = c.insert_after(c.cbefore_begin(), 3, 3); - assert(i == c.before_begin()); + assert(i == next(c.before_begin(), 3)); assert(distance(c.begin(), c.end()) == 3); assert(*next(c.begin(), 0) == 3); assert(*next(c.begin(), 1) == 3); assert(*next(c.begin(), 2) == 3); i = c.insert_after(c.begin(), 2, 2); - assert(i == c.begin()); + assert(i == next(c.begin(), 2)); assert(distance(c.begin(), c.end()) == 5); assert(*next(c.begin(), 0) == 3); assert(*next(c.begin(), 1) == 2);