From f071dd1406301162c56044708794760dca0788ab Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Fri, 25 Aug 2023 23:24:32 +0300 Subject: [PATCH] Fix a search pane crash when a row isn't in the hit list. Fixes KICAD-Q7 Fixes KICAD-1A6 --- eeschema/widgets/search_handlers.h | 10 +++++++++- pcbnew/widgets/search_handlers.h | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/eeschema/widgets/search_handlers.h b/eeschema/widgets/search_handlers.h index 725aed8a98..e17aa9f10d 100644 --- a/eeschema/widgets/search_handlers.h +++ b/eeschema/widgets/search_handlers.h @@ -48,7 +48,15 @@ public: wxString GetResultCell( int aRow, int aCol ) override { - return getResultCell( m_hitlist[aRow], aCol ); + if( aRow >= m_hitlist.size() ) + return wxEmptyString; + + const SCH_SEARCH_HIT& hit = m_hitlist[aRow]; + + if( !hit.item ) + return wxEmptyString; + + return getResultCell( hit, aCol ); } void FindAll( const std::function& aCollector ); diff --git a/pcbnew/widgets/search_handlers.h b/pcbnew/widgets/search_handlers.h index 2cbd620ec5..ff88a1d7de 100644 --- a/pcbnew/widgets/search_handlers.h +++ b/pcbnew/widgets/search_handlers.h @@ -39,7 +39,15 @@ public: wxString GetResultCell( int aRow, int aCol ) override { - return getResultCell( m_hitlist[aRow], aCol ); + if( aRow >= m_hitlist.size() ) + return wxEmptyString; + + BOARD_ITEM* item = m_hitlist[aRow]; + + if( !item ) + return wxEmptyString; + + return getResultCell( item, aCol ); } void Sort( int aCol, bool aAscending ) override;