]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datavcmn.cpp
fixing overrelease and out-of-bounds write, fixes #13725
[wxWidgets.git] / src / common / datavcmn.cpp
index 1ac5c1d16f897afc4604455e9a8579944f0622fb..69301bc8a189ca6adb8485370d346a0cdc0ea836 100644 (file)
@@ -1768,7 +1768,7 @@ void wxDataViewListStore::DeleteAllItems()
 
 void wxDataViewListStore::SetItemData( const wxDataViewItem& item, wxUIntPtr data )
 {
-    wxDataViewListStoreLine* line = m_data[wxPtrToUInt( item.GetID() ) - 1];
+    wxDataViewListStoreLine* line = m_data[GetRow(item)];
     if (!line) return;
 
     line->SetData( data );
@@ -1776,8 +1776,8 @@ void wxDataViewListStore::SetItemData( const wxDataViewItem& item, wxUIntPtr dat
 
 wxUIntPtr wxDataViewListStore::GetItemData( const wxDataViewItem& item ) const
 {
-    wxDataViewListStoreLine* line = m_data[wxPtrToUInt( item.GetID() ) - 1];
-    if (!line) return NULL;
+    wxDataViewListStoreLine* line = m_data[GetRow(item)];
+    if (!line) return static_cast<wxUIntPtr>(NULL);
 
     return line->GetData();
 }
@@ -2184,10 +2184,7 @@ void wxDataViewTreeStore::DeleteItem( const wxDataViewItem& item )
     wxDataViewTreeStoreContainerNode *parent_node = FindContainerNode( parent_item );
     if (!parent_node) return;
 
-    wxDataViewTreeStoreContainerNode *node = FindContainerNode( item );
-    if (!node) return;
-
-    parent_node->GetChildren().DeleteObject( node );
+    parent_node->GetChildren().DeleteObject( FindNode(item) );
 }
 
 void wxDataViewTreeStore::DeleteChildren( const wxDataViewItem& item )