]> git.saurik.com Git - wxWidgets.git/commitdiff
delete the event object in ProcessPendingEvents() even if the handler throws an excep...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 26 Jan 2008 23:18:30 +0000 (23:18 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 26 Jan 2008 23:18:30 +0000 (23:18 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/event.cpp

index a03b9fe1b92a9df9f9c84898cc5dd647763c8935..0ba18aa5bce691c2240b5c9bb0e53bb7b4fe3b4b 100644 (file)
 #endif
 
 #include "wx/thread.h"
 #endif
 
 #include "wx/thread.h"
+#include "wx/ptr_scpd.h"
+
+wxDECLARE_SCOPED_PTR(wxEvent, wxEventPtr)
+wxDEFINE_SCOPED_PTR(wxEvent, wxEventPtr)
 
 // ----------------------------------------------------------------------------
 // wxWin macros
 
 // ----------------------------------------------------------------------------
 // wxWin macros
@@ -1167,7 +1171,7 @@ void wxEvtHandler::ProcessPendingEvents()
                  "should have pending events if called" );
 
     wxList::compatibility_iterator node = m_pendingEvents->GetFirst();
                  "should have pending events if called" );
 
     wxList::compatibility_iterator node = m_pendingEvents->GetFirst();
-    wxEvent * const event = wx_static_cast(wxEvent *, node->GetData());
+    wxEventPtr event(wx_static_cast(wxEvent *, node->GetData()));
 
     // it's important we remove event from list before processing it, else a
     // nested event loop, for example from a modal dialog, might process the
 
     // it's important we remove event from list before processing it, else a
     // nested event loop, for example from a modal dialog, might process the
@@ -1186,8 +1190,6 @@ void wxEvtHandler::ProcessPendingEvents()
     // careful: this object could have been deleted by the event handler
     // executed by the above ProcessEvent() call, so we can't access any fields
     // of this object any more
     // careful: this object could have been deleted by the event handler
     // executed by the above ProcessEvent() call, so we can't access any fields
     // of this object any more
-
-    delete event;
 }
 
 /*
 }
 
 /*