Libedit: Fix a crash when trying to revert changes in a library

(No crash when reverting changes in a part, only in a library)

Fixes: lp:1787772
https://bugs.launchpad.net/kicad/+bug/1787772
This commit is contained in:
jean-pierre charras 2018-08-19 10:25:12 +02:00
parent 46fddab126
commit 7a10feb35d
1 changed files with 19 additions and 5 deletions

View File

@ -542,15 +542,29 @@ void LIB_EDIT_FRAME::OnRevert( wxCommandEvent& aEvent )
{
LIB_ID libId = getTargetLibId();
const wxString& libName = libId.GetLibNickname();
const wxString& partName = libId.GetLibItemName();
const wxString& partName = libId.GetLibItemName(); // Empty if this is the library itself that is selected
if( !IsOK( this, _( "The revert operation cannot be undone!\n\nRevert changes?" ) ) )
return;
bool currentPart = isCurrentPart( libId );
bool reload_currentPart;
wxString curr_partName = partName;
// the library itself is reverted: the current part will be reloaded only if it is owned by this library
if( partName.IsEmpty() )
{
LIB_ID curr_libId = GetCurPart()->GetLibId();
reload_currentPart = libName == curr_libId.GetLibNickname();
if( reload_currentPart )
curr_partName = curr_libId.GetLibItemName();
}
else
reload_currentPart = isCurrentPart( libId );
int unit = m_unit;
if( currentPart )
if( reload_currentPart )
emptyScreen();
if( partName.IsEmpty() )
@ -565,8 +579,8 @@ void LIB_EDIT_FRAME::OnRevert( wxCommandEvent& aEvent )
m_libMgr->ClearPartModified( libId.GetLibItemName(), libId.GetLibNickname() );
}
if( currentPart && m_libMgr->PartExists( partName, libName ) )
loadPart( partName, libName, unit );
if( reload_currentPart && m_libMgr->PartExists( curr_partName, libName ) )
loadPart( curr_partName, libName, unit );
m_treePane->Refresh();
}