Avoid selecting all rows up to UINT_MAX in generic wxDataViewCtrl.

Shift clicking in a control with multiple selections without a previous
current row attempted to select all rows from the current one up to UINT_MAX
which resulted in a program freezing (and probably running out of memory in 64
bit builds).

Fix this by explicitly checking for the absence of the current item.

Closes #16582.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@77941 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-10-02 14:35:30 +00:00
parent 8150fdb678
commit 0978bf1412

View File

@@ -4359,6 +4359,13 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
unsigned int lineFrom = oldCurrentRow,
lineTo = current;
if ( lineFrom == static_cast<unsigned>(-1) )
{
// If we hadn't had any current row before, treat this as a
// simple click and select the new row only.
lineFrom = current;
}
if ( lineTo < lineFrom )
{
lineTo = lineFrom;