From 736628f7a0c80fcfc075224e5d9ef2dcceeac4cb Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 17 Apr 2020 23:28:03 +0200 Subject: [PATCH] Fix crash due to dereferencing null pointer in list mode TryAdvanceCurrentColumn() is called with NULL node in this case, so avoid dereferencing it. --- src/generic/datavgen.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 3dfa2a9525..97038b4525 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -4525,8 +4525,18 @@ bool wxDataViewMainWindow::TryAdvanceCurrentColumn(wxDataViewTreeNode *node, wxK { if ( forward ) { - // find first column with value - m_currentCol = FindFirstColumnWithValue(node->GetItem()); + if ( node ) + { + // find first column with value + m_currentCol = FindFirstColumnWithValue(node->GetItem()); + } + else + { + // in the special "list" case, all columns have values, so just + // take the first one + m_currentCol = GetOwner()->GetColumnAt(0); + } + m_currentColSetByKeyboard = true; RefreshRow(m_currentRow); return true; @@ -4579,7 +4589,7 @@ bool wxDataViewMainWindow::TryAdvanceCurrentColumn(wxDataViewTreeNode *node, wxK return false; } } - if ( GetModel()->HasValue(node->GetItem(), i) ) + if ( !node || GetModel()->HasValue(node->GetItem(), i) ) break; }