]> git.saurik.com Git - wxWidgets.git/commitdiff
assert in GetNextItem() fixed (yes, now it is)
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 26 Jan 2000 00:19:16 +0000 (00:19 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 26 Jan 2000 00:19:16 +0000 (00:19 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/listctrl.cpp

index ac31cb7f6900f64b155c03971615948d29e1837e..c6c67c9613f13f2888f33ce291335213eb696271 100644 (file)
@@ -2335,14 +2335,23 @@ long wxListMainWindow::GetNextItem( long item,
                                     int WXUNUSED(geometry),
                                     int state )
 {
                                     int WXUNUSED(geometry),
                                     int state )
 {
-    long ret = item;
-    wxCHECK_MSG( (ret == -1) || ((int)ret < GetItemCount()), -1,
+    long ret = item,
+         max = GetItemCount();
+    wxCHECK_MSG( (ret == -1) || (ret < max), -1,
                  _T("invalid listctrl index in GetNextItem()") );
 
     // notice that we start with the next item (or the first one if item == -1)
     // and this is intentional to allow writing a simple loop to iterate over
     // all selected items
                  _T("invalid listctrl index in GetNextItem()") );
 
     // notice that we start with the next item (or the first one if item == -1)
     // and this is intentional to allow writing a simple loop to iterate over
     // all selected items
-    wxNode *node = m_lines.Nth( (size_t)++ret );
+    ret++;
+    if ( ret == max )
+    {
+        // this is not an error because the index was ok initially, just no
+        // such item
+        return -1;
+    }
+
+    wxNode *node = m_lines.Nth( (size_t)ret );
     while (node)
     {
         wxListLineData *line = (wxListLineData*)node->Data();
     while (node)
     {
         wxListLineData *line = (wxListLineData*)node->Data();