Fix for probably rare but potential refcount leak.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2004-09-27 20:46:44 +00:00
parent c13c38d484
commit 2d0c2e79c2

View File

@@ -2591,8 +2591,8 @@ wxGridCellAttr *wxGridCellAttrProvider::GetAttr(int row, int col,
wxGridCellAttr *attrrow = m_data->m_rowAttrs.GetAttr(row); wxGridCellAttr *attrrow = m_data->m_rowAttrs.GetAttr(row);
wxGridCellAttr *attrcol = m_data->m_colAttrs.GetAttr(col); wxGridCellAttr *attrcol = m_data->m_colAttrs.GetAttr(col);
if((attrcell != attrrow) && (attrrow !=attrcol) && (attrcell != attrcol)){ if((attrcell != attrrow) && (attrrow != attrcol) && (attrcell != attrcol)){
// Two or move are non NULL // Two or more are non NULL
attr = new wxGridCellAttr; attr = new wxGridCellAttr;
attr->SetKind(wxGridCellAttr::Merged); attr->SetKind(wxGridCellAttr::Merged);
@@ -2614,11 +2614,21 @@ wxGridCellAttr *wxGridCellAttrProvider::GetAttr(int row, int col,
//m_data->m_mergeAttr.SetAttr(attr, row, col); //m_data->m_mergeAttr.SetAttr(attr, row, col);
} }
else else
{ {
// one or none is non null return it or null. // one or none is non null return it or null.
if(attrrow) attr = attrrow; if(attrrow) attr = attrrow;
if(attrcol) attr = attrcol; if(attrcol)
if(attrcell) attr = attrcell; {
if(attr)
attr->DecRef();
attr = attrcol;
}
if(attrcell)
{
if(attr)
attr->DecRef();
attr = attrcell;
}
} }
} }
break; break;
@@ -2626,10 +2636,10 @@ wxGridCellAttr *wxGridCellAttrProvider::GetAttr(int row, int col,
attr = m_data->m_cellAttrs.GetAttr(row, col); attr = m_data->m_cellAttrs.GetAttr(row, col);
break; break;
case (wxGridCellAttr::Col): case (wxGridCellAttr::Col):
attr = m_data->m_colAttrs.GetAttr(col); attr = m_data->m_colAttrs.GetAttr(col);
break; break;
case (wxGridCellAttr::Row): case (wxGridCellAttr::Row):
attr = m_data->m_rowAttrs.GetAttr(row); attr = m_data->m_rowAttrs.GetAttr(row);
break; break;
default: default:
// unused as yet... // unused as yet...
@@ -3815,7 +3825,7 @@ wxEND_HANDLERS_TABLE()
wxCONSTRUCTOR_5( wxGrid , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle ) wxCONSTRUCTOR_5( wxGrid , wxWindow* , Parent , wxWindowID , Id , wxPoint , Position , wxSize , Size , long , WindowStyle )
/* /*
TODO : Expose more information of a list's layout etc. via appropriate objects (<28> la NotebookPageInfo) TODO : Expose more information of a list's layout etc. via appropriate objects (<28><EFBFBD> la NotebookPageInfo)
*/ */
#else #else
IMPLEMENT_DYNAMIC_CLASS( wxGrid, wxScrolledWindow ) IMPLEMENT_DYNAMIC_CLASS( wxGrid, wxScrolledWindow )