deal with the situation when a (dynamic) event handler disconnects itself during its execution (and skips the event, too): this is used to crash but there is no reason it should
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1344,6 +1344,10 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event )
|
||||
wxDynamicEventTableEntry *entry = (wxDynamicEventTableEntry*)node->GetData();
|
||||
#endif // WXWIN_COMPATIBILITY_EVENT_TYPES/!WXWIN_COMPATIBILITY_EVENT_TYPES
|
||||
|
||||
// get next node before (maybe) calling the event handler as it could
|
||||
// call Disconnect() invalidating the current node
|
||||
node = node->GetNext();
|
||||
|
||||
if ((event.GetEventType() == entry->m_eventType) && (entry->m_fn != 0))
|
||||
{
|
||||
wxEvtHandler *handler =
|
||||
@@ -1358,8 +1362,6 @@ bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event )
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
node = node->GetNext();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user