Don't compare invalid iterators in wxCommandProcessor::IsDirty().
Check that m_lastSavedCommand is valid before comparing it with m_currentCommand as comparing invalid iterators results in an assert in STL build (and probably should also result in an assert in non-STL build too for consistency). Also move IsDirty() implementation out of line to make it easier to modify it further in the future and because there is no real reason to keep it inline. Closes #13465. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -97,10 +97,7 @@ public:
|
|||||||
virtual void ClearCommands();
|
virtual void ClearCommands();
|
||||||
|
|
||||||
// Has the current project been changed?
|
// Has the current project been changed?
|
||||||
virtual bool IsDirty() const
|
virtual bool IsDirty() const;
|
||||||
{
|
|
||||||
return m_currentCommand && (m_lastSavedCommand != m_currentCommand);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mark the current command as the one where the last save took place
|
// Mark the current command as the one where the last save took place
|
||||||
void MarkAsSaved()
|
void MarkAsSaved()
|
||||||
|
@@ -328,4 +328,14 @@ void wxCommandProcessor::ClearCommands()
|
|||||||
m_lastSavedCommand = wxList::compatibility_iterator();
|
m_lastSavedCommand = wxList::compatibility_iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxCommandProcessor::IsDirty() const
|
||||||
|
{
|
||||||
|
if ( !m_currentCommand )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ( !m_lastSavedCommand )
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return m_lastSavedCommand != m_currentCommand;
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user