summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcxx/include/ext/slist20
1 files changed, 7 insertions, 13 deletions
diff --git a/libcxx/include/ext/slist b/libcxx/include/ext/slist
index ef115b3d6cd..30ba7e30b43 100644
--- a/libcxx/include/ext/slist
+++ b/libcxx/include/ext/slist
@@ -21,7 +21,7 @@ namespace __gnu_cxx {
using namespace std;
-template <class _Tp, class _Alloc>
+template <class _Tp, class _Alloc = allocator<_Tp> >
class _LIBCPP_VISIBLE slist : forward_list<_Tp, _Alloc>
{
public:
@@ -105,12 +105,9 @@ template <class _Tp, class _Alloc>
inline _LIBCPP_INLINE_VISIBILITY
typename slist<_Tp, _Alloc>::iterator slist<_Tp, _Alloc>::previous(iterator __pos)
{
- iterator __a = begin(), __b = end();
- while (__a != __pos)
- {
- __b = __a;
- ++__a;
- }
+ iterator __a = begin(), __b = begin();
+ while (++__a != __pos)
+ ++__b;
return __b;
}
@@ -118,12 +115,9 @@ template <class _Tp, class _Alloc>
inline _LIBCPP_INLINE_VISIBILITY
typename slist<_Tp, _Alloc>::const_iterator slist<_Tp, _Alloc>::previous(const_iterator __pos)
{
- iterator __a = begin(), __b = end();
- while (__a != __pos)
- {
- __b = __a;
- ++__a;
- }
+ iterator __a = begin(), __b = begin();
+ while (++__a != __pos)
+ ++__b;
return __b;
}
OpenPOWER on IntegriCloud