From: Vadim Zeitlin Date: Tue, 14 Oct 2008 09:04:52 +0000 (+0000) Subject: fix the bug in insert(end(), value) and added unit test for it X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b9f9065e283f2f4b7330c0a2a7186e6cabc20f6d fix the bug in insert(end(), value) and added unit test for it git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- 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()