From ef20428e992975d27f38c8eeefa0f4c5006e7589 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 25 Jan 2012 00:05:09 +0000 Subject: [PATCH] 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 --- include/wx/cmdproc.h | 5 +---- src/common/cmdproc.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/include/wx/cmdproc.h b/include/wx/cmdproc.h index 6072e7fda0..4fa3e34c19 100644 --- a/include/wx/cmdproc.h +++ b/include/wx/cmdproc.h @@ -97,10 +97,7 @@ public: virtual void ClearCommands(); // Has the current project been changed? - virtual bool IsDirty() const - { - return m_currentCommand && (m_lastSavedCommand != m_currentCommand); - } + virtual bool IsDirty() const; // Mark the current command as the one where the last save took place void MarkAsSaved() diff --git a/src/common/cmdproc.cpp b/src/common/cmdproc.cpp index 7de08c2790..ed7efb3e3f 100644 --- a/src/common/cmdproc.cpp +++ b/src/common/cmdproc.cpp @@ -328,4 +328,14 @@ void wxCommandProcessor::ClearCommands() m_lastSavedCommand = wxList::compatibility_iterator(); } +bool wxCommandProcessor::IsDirty() const +{ + if ( !m_currentCommand ) + return false; + + if ( !m_lastSavedCommand ) + return true; + + return m_lastSavedCommand != m_currentCommand; +} -- 2.45.2