Don't compare invalid iterators in wxCommandProcessor code.
Comparing invalid iterators results in an assert failure in STL build. We might also change wxList::compatibility_iterator::operator==() to allow comparing invalid iterators (which should be different from all the other ones but what about comparing two invalid iterators?) but it would probably be better to get rid of all uses of compatibility_iterator in the code instead in the long term. Closes #12730. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -122,13 +122,14 @@ void wxCommandProcessor::Store(wxCommand *command)
|
||||
while (node)
|
||||
{
|
||||
wxList::compatibility_iterator next = node->GetNext();
|
||||
delete (wxCommand *)node->GetData();
|
||||
m_commands.Erase(node);
|
||||
|
||||
// Make sure m_lastSavedCommand won't point to freed memory
|
||||
if ( m_lastSavedCommand == node )
|
||||
if ( m_lastSavedCommand && m_lastSavedCommand == node )
|
||||
m_lastSavedCommand = wxList::compatibility_iterator();
|
||||
|
||||
delete (wxCommand *)node->GetData();
|
||||
m_commands.Erase(node);
|
||||
|
||||
node = next;
|
||||
}
|
||||
}
|
||||
@@ -136,13 +137,14 @@ void wxCommandProcessor::Store(wxCommand *command)
|
||||
if ( (int)m_commands.GetCount() == m_maxNoCommands )
|
||||
{
|
||||
wxList::compatibility_iterator firstNode = m_commands.GetFirst();
|
||||
|
||||
// Make sure m_lastSavedCommand won't point to freed memory
|
||||
if ( m_lastSavedCommand && m_lastSavedCommand == firstNode )
|
||||
m_lastSavedCommand = wxList::compatibility_iterator();
|
||||
|
||||
wxCommand *firstCommand = (wxCommand *)firstNode->GetData();
|
||||
delete firstCommand;
|
||||
m_commands.Erase(firstNode);
|
||||
|
||||
// Make sure m_lastSavedCommand won't point to freed memory
|
||||
if ( m_lastSavedCommand == firstNode )
|
||||
m_lastSavedCommand = wxList::compatibility_iterator();
|
||||
}
|
||||
|
||||
m_commands.Append(command);
|
||||
|
Reference in New Issue
Block a user