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 ) );
|