attempt to fix crash in DeleteAllItems()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18849 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
e7b6ce1cf9
commit
7eb833e673
@ -1752,7 +1752,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
||||
// there's a GPF in Windows.
|
||||
// By returning TRUE here, we avoid further processing
|
||||
// of this strange message.
|
||||
if (info->iItem > GetColumnCount())
|
||||
if ( info->iItem >= GetColumnCount() )
|
||||
return TRUE;
|
||||
}
|
||||
// fall through
|
||||
@ -1779,8 +1779,32 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
|
||||
case LVN_COLUMNCLICK:
|
||||
case LVN_ITEMCHANGED:
|
||||
case LVN_ITEMCHANGING:
|
||||
if ( iItem != -1 )
|
||||
if ( item != -1 )
|
||||
{
|
||||
if ( iItem >= GetItemCount() )
|
||||
{
|
||||
// there is apparently a bug in comctl32.dll version
|
||||
// 5.50.4704.1100 (note that the MS DLL database
|
||||
// doesn't say what this version is, it's not the one
|
||||
// shipped with W2K although the bug was reported under
|
||||
// that system) and it sends us LVN_ITEMCHANGING
|
||||
// notifications with the item out of range -- and as
|
||||
// we access the items client data, we crash below
|
||||
//
|
||||
// see
|
||||
//
|
||||
// http://lists.wxwindows.org/cgi-bin/ezmlm-cgi?8:mss:29852:knlihdmadhaljafjajei
|
||||
//
|
||||
// and the thread continuation for more details
|
||||
// (although note that the bug may be present in other
|
||||
// versions of comctl32.dll as well as it has been
|
||||
// reported quite a few times)
|
||||
//
|
||||
// to fix this, simply ignore these "bad" events (as
|
||||
// above with HDN_GETDISPINFOW)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
wxListItemInternalData *internaldata =
|
||||
(wxListItemInternalData *) nmLV->lParam;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user