From: Vadim Zeitlin Date: Sat, 11 Mar 2006 21:50:44 +0000 (+0000) Subject: deal with the situation when a (dynamic) event handler disconnects itself during... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/7fce89b9441f5a7c885086af6e0d1bf981156c49?ds=inline 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 --- diff --git a/src/common/event.cpp b/src/common/event.cpp index 6da2424443..e0ea296ae2 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -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;