Fix memory leak when a spacer is added, and crash when a window is added before wxSiz...
authorRyan Norton <wxprojects@comcast.net>
Wed, 6 Apr 2005 11:39:04 +0000 (11:39 +0000)
committerRyan Norton <wxprojects@comcast.net>
Wed, 6 Apr 2005 11:39:04 +0000 (11:39 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/sizer.cpp

index e22859979b7aecc6e91481526896d66f7477a0c2..36c63f9e109bb3c043b53ffbfc2a1f25f097926a 100644 (file)
@@ -388,7 +388,14 @@ void wxSizerItem::DeleteWindows()
             break;
 
         case Item_Window:
+            //We are deleting the window from this sizer - normally
+            //the window destroys the sizer associated with it,
+            //which might destroy this, which we don't want
+            m_window->SetContainingSizer(NULL);
             m_window->Destroy();
+            //Putting this after the switch will result in a spacer
+            //not being deleted properly on destruction
+            m_kind = Item_None; 
             break;
 
         case Item_Sizer:
@@ -400,7 +407,6 @@ void wxSizerItem::DeleteWindows()
             wxFAIL_MSG( _T("unexpected wxSizerItem::m_kind") );
     }
 
-    m_kind = Item_None;
 }
 
 void wxSizerItem::Show( bool show )