From d1022fd6ba3f28d6530e6373d520afccb9d15186 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 26 Jan 2000 00:19:16 +0000 Subject: [PATCH] assert in GetNextItem() fixed (yes, now it is) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/generic/listctrl.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp index ac31cb7f69..c6c67c9613 100644 --- a/src/generic/listctrl.cpp +++ b/src/generic/listctrl.cpp @@ -2335,14 +2335,23 @@ long wxListMainWindow::GetNextItem( long item, 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 - 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(); -- 2.45.2