]> git.saurik.com Git - wxWidgets.git/commitdiff
fix memory leak of pending events in wxEvtHandler dtor
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 8 Nov 2005 00:45:46 +0000 (00:45 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 8 Nov 2005 00:45:46 +0000 (00:45 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/common/event.cpp

index 8ee50ea1a76e95322d2858126d78a9a33dfe0959..dd89687033f5c9df48bd2376308e46546bcba5ea 100644 (file)
@@ -29,6 +29,7 @@ All (GUI):
 - Added wxBitmapButton::SetHoverBitmap()
 - Access to titles through Get/SetTitle is available now only for top level
   windows (wxDialog, wxFrame).
+- Fixed memory leak of pending events in wxEvtHandler
 
 wxMSW:
 
index 31196f57c49dac3ad37d7c649e81d884e5a66a0d..ec31583f0d0caaf600a64b0a9b1fa56db211866e 100644 (file)
@@ -1084,7 +1084,10 @@ void wxEvtHandler::AddPendingEvent(wxEvent& event)
     wxENTER_CRIT_SECT( Lock() );
 
     if ( !m_pendingEvents )
+    {
       m_pendingEvents = new wxList;
+      m_pendingEvents->DeleteContents(true);
+    }
 
     m_pendingEvents->Append(eventCopy);
 
@@ -1126,15 +1129,14 @@ void wxEvtHandler::ProcessPendingEvents()
     {
         wxEvent *event = (wxEvent *)node->GetData();
 
-        m_pendingEvents->Erase(node);
-
         wxLEAVE_CRIT_SECT( Lock() );
 
         ProcessEvent(*event);
-        delete event;
 
         wxENTER_CRIT_SECT( Lock() );
 
+        m_pendingEvents->Erase(node);
+
         if ( !--n )
             break;
     }