From: Vadim Zeitlin Date: Tue, 27 Aug 2002 17:03:56 +0000 (+0000) Subject: fixed crashes in Push/PopEventHandler() if the current handler is NULL X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/3a074ba8f6df3a80e0d6a89d138b1a9caa7c8366 fixed crashes in Push/PopEventHandler() if the current handler is NULL git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16813 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 6f94732748..dd19223457 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -722,8 +722,13 @@ bool wxWindowBase::Reparent(wxWindowBase *newParent) void wxWindowBase::PushEventHandler(wxEvtHandler *handler) { - handler->SetNextHandler(GetEventHandler()); - GetEventHandler()->SetPreviousHandler(handler); + wxEvtHandler *handlerOld = GetEventHandler(); + + handler->SetNextHandler(handlerOld); + + if ( handlerOld ) + GetEventHandler()->SetPreviousHandler(handler); + SetEventHandler(handler); } @@ -734,8 +739,11 @@ wxEvtHandler *wxWindowBase::PopEventHandler(bool deleteHandler) { wxEvtHandler *handlerB = handlerA->GetNextHandler(); handlerA->SetNextHandler((wxEvtHandler *)NULL); - handlerB->SetPreviousHandler((wxEvtHandler *)NULL); + + if ( handlerB ) + handlerB->SetPreviousHandler((wxEvtHandler *)NULL); SetEventHandler(handlerB); + if ( deleteHandler ) { delete handlerA;