From: Stefan Neis Date: Sun, 1 Sep 2002 00:54:01 +0000 (+0000) Subject: Applied AutoWrap Renderer Bugfix by Roger Gammans (Patch 467479). X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/a373d23b145cbd0e29548dc1955c5c375a333272?ds=inline Applied AutoWrap Renderer Bugfix by Roger Gammans (Patch 467479). Blindly tried to fix crash reported by Roman Vanicek on Mailing list: SetCellHighlightColour sometimes segfaults in wxGTK. The application crashes in LookupAttr. Tentative explanation: Cache handling gets confused if LookupAttr gets called on wxGridNoCell. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index c00faac20d..2bb064129b 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -6788,7 +6788,6 @@ void wxGrid::DrawTextRectangle( wxDC& dc, { wxArrayString lines; - dc.SetClippingRegion( rect ); StringToLines( value, lines ); @@ -6810,6 +6809,7 @@ void wxGrid::DrawTextRectangle( wxDC& dc, long textWidth, textHeight; long lineWidth, lineHeight; + dc.SetClippingRegion( rect ); if ( lines.GetCount() ) { GetTextBoxSize( dc, lines, &textWidth, &textHeight ); @@ -8509,11 +8509,17 @@ bool wxGrid::LookupAttr(int row, int col, wxGridCellAttr **attr) const wxGridCellAttr *wxGrid::GetCellAttr(int row, int col) const { - wxGridCellAttr *attr; - if ( !LookupAttr(row, col, &attr) ) - { - attr = m_table ? m_table->GetAttr(row, col , wxGridCellAttr::Any) : (wxGridCellAttr *)NULL; - CacheAttr(row, col, attr); + wxGridCellAttr *attr = NULL; + // Additional test to avoid looking at the cache e.g. for + // wxNoCellCoords, as this will confuse memory management. + if ( row >= 0 ) + { + if ( !LookupAttr(row, col, &attr) ) + { + attr = m_table ? m_table->GetAttr(row, col , wxGridCellAttr::Any) + : (wxGridCellAttr *)NULL; + CacheAttr(row, col, attr); + } } if (attr) {