From: Jeffrey D. <ha...@us...> - 2003-10-07 02:30:56
|
Log Message: ----------- fix list overflows Modified Files: -------------- /cvsroot/decaldev/source/DecalControls: List.cpp Revision Data ------------- Index: List.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DecalControls/List.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- List.cpp 3 Jan 2003 04:49:33 -0000 1.21 +++ List.cpp 7 Oct 2003 02:30:52 -0000 1.22 @@ -214,14 +214,23 @@ { _ASSERTE( m_cols.size() > 0 ); _ASSERTE( nX >= 0 ); - _ASSERTE( nX < m_cols.back().m_nDataRight ); + _ASSERTE( nX < m_cols.back().m_nDataRight ); _ASSERTE( nSubValue >= 0 ); _ASSERTE( nSubValue < ( m_cols[ nX ].m_nDataRight - m_cols[ nX ].m_nDataLeft ) ); _ASSERTE( nY >= 0 ); _ASSERTE( nY < m_rows.size() ); _ASSERTE( newVal != NULL ); + if( nY >= m_rows.size() ) + return E_FAIL; + cRow &rowData = m_rows[ nY ]; + + long lDataColumns = 0; + m_cols[ nX ].m_pColumn->get_DataColumns( &lDataColumns ); + + if( nSubValue > lDataColumns ) + return E_FAIL; HRESULT hRes = ::VariantCopy( rowData.m_pData + ( m_cols[ nX ].m_nDataLeft + nSubValue ), newVal ); _ASSERTE( SUCCEEDED( hRes ) ); |