]> git.saurik.com Git - wxWidgets.git/commitdiff
fixing memory leaks on three levels (bug report 1905138)
authorStefan Csomor <csomor@advancedconcepts.ch>
Sun, 4 May 2008 13:55:14 +0000 (13:55 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Sun, 4 May 2008 13:55:14 +0000 (13:55 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/mac/carbon/listctrl_mac.cpp

index 337bbaa8e841cd4bdf7e5233185a81ef48d53e59..13a20ac2200f4318dde07d23c6fc9c052949c3d8 100644 (file)
@@ -771,6 +771,8 @@ wxListCtrl::~wxListCtrl()
         delete m_imageListState;
 
     delete m_renameTimer;
+    
+    WX_CLEAR_LIST(wxColumnList, m_colsInfo);
 }
 
 /*static*/
@@ -2418,6 +2420,7 @@ void wxListCtrl::SetFocus()
 
 wxMacListCtrlItem::~wxMacListCtrlItem()
 {
+    WX_CLEAR_HASH_MAP( wxListItemList, m_rowItems );
 }
 
 void wxMacListCtrlItem::Notification(wxMacDataItemBrowserControl *owner ,
@@ -2997,18 +3000,27 @@ OSStatus wxMacDataBrowserListCtrlControl::GetSetItemData(DataBrowserItemID itemI
 
 void wxMacDataBrowserListCtrlControl::ItemNotification(DataBrowserItemID itemID,
     DataBrowserItemNotification message,
-    DataBrowserItemDataRef WXUNUSED(itemData) )
+    DataBrowserItemDataRef itemData )
 {
+    wxMacListCtrlItem *item = NULL;
+    if ( !m_isVirtual )
+    {
+        item = (wxMacListCtrlItem *) itemID;
+    }
+    
     // we want to depend on as little as possible to make sure tear-down of controls is safe
-    if ( message == kDataBrowserItemRemoved)
+    if ( message == kDataBrowserItemRemoved )
     {
-        // make sure MacDelete does the proper teardown.
+        if ( item )
+            item->Notification(this, message, itemData);
         return;
     }
     else if ( message == kDataBrowserItemAdded )
     {
         // we don't issue events on adding, the item is not really stored in the list yet, so we
         // avoid asserts by getting out now
+        if ( item )
+            item->Notification(this, message, itemData);
         return  ;
     }