pcbnew: Check for valid data before deleting

We need to check for valid rows and iterators before removing a 3d model

Fixes: lp:1829337
* https://bugs.launchpad.net/kicad/+bug/1829337
This commit is contained in:
Seth Hillbrand 2019-05-17 06:08:01 -07:00
parent 97166a72f5
commit f32c95229e
2 changed files with 7 additions and 3 deletions

View File

@ -477,7 +477,7 @@ void DIALOG_FOOTPRINT_BOARD_EDITOR::OnRemove3DModel( wxCommandEvent& )
int idx = m_modelsGrid->GetGridCursorRow(); int idx = m_modelsGrid->GetGridCursorRow();
if( idx >= 0 ) if( idx >= 0 && m_modelsGrid->GetNumberRows() && !m_shapes3D_list.empty() )
{ {
m_shapes3D_list.erase( m_shapes3D_list.begin() + idx ); m_shapes3D_list.erase( m_shapes3D_list.begin() + idx );
m_modelsGrid->DeleteRows( idx, 1 ); m_modelsGrid->DeleteRows( idx, 1 );
@ -889,6 +889,8 @@ void DIALOG_FOOTPRINT_BOARD_EDITOR::OnUpdateUI( wxUpdateUIEvent& )
} }
m_initialFocus = false; m_initialFocus = false;
} }
m_buttonRemove->Enable( m_modelsGrid->GetNumberRows() > 0 );
} }

View File

@ -390,7 +390,7 @@ void DIALOG_FOOTPRINT_FP_EDITOR::OnRemove3DModel( wxCommandEvent& )
int idx = m_modelsGrid->GetGridCursorRow(); int idx = m_modelsGrid->GetGridCursorRow();
if( idx >= 0 ) if( idx >= 0 && m_modelsGrid->GetNumberRows() && !m_shapes3D_list.empty() )
{ {
m_shapes3D_list.erase( m_shapes3D_list.begin() + idx ); m_shapes3D_list.erase( m_shapes3D_list.begin() + idx );
m_modelsGrid->DeleteRows( idx ); m_modelsGrid->DeleteRows( idx );
@ -853,6 +853,8 @@ void DIALOG_FOOTPRINT_FP_EDITOR::OnUpdateUI( wxUpdateUIEvent& event )
m_delayedFocusRow = -1; m_delayedFocusRow = -1;
m_delayedFocusColumn = -1; m_delayedFocusColumn = -1;
} }
m_button3DShapeRemove->Enable( m_modelsGrid->GetNumberRows() > 0 );
} }