diff --git a/include/wx/list.h b/include/wx/list.h index aca713b04c..a93d2eca93 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -1007,7 +1007,10 @@ private: } \ iterator insert(const iterator& it, const_reference v) \ { \ - Insert(it.m_node, (const_base_reference)v); \ + if ( it == end() ) \ + Append((const_base_reference)v); \ + else \ + Insert(it.m_node, (const_base_reference)v); \ iterator itprev(it); \ return itprev--; \ } \ @@ -1017,7 +1020,7 @@ private: Insert(it.m_node, (const_base_reference)v); \ } \ void insert(const iterator& it, \ - const const_iterator& first, const const_iterator& last)\ + const_iterator first, const const_iterator& last) \ { \ for(; first != last; ++first) \ Insert(it.m_node, (const_base_reference)*first); \ diff --git a/tests/lists/lists.cpp b/tests/lists/lists.cpp index 85eea4c98f..ac99645490 100644 --- a/tests/lists/lists.cpp +++ b/tests/lists/lists.cpp @@ -157,6 +157,14 @@ void ListsTestCase::wxStdListTest() { CPPUNIT_ASSERT( *it == i + &i ); } + + list1.clear(); + CPPUNIT_ASSERT( list1.empty() ); + + list1.insert(list1.end(), (int *)1); + list1.insert(list1.end(), (int *)2); + CPPUNIT_ASSERT_EQUAL( (int *)1, list1.front() ); + CPPUNIT_ASSERT_EQUAL( (int *)2, list1.back() ); } void ListsTestCase::wxListCtorTest()