Update of /cvsroot/myoledb/myoledb3
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15166
Modified Files:
rowset.cpp rowset.h
Log Message:
Make m_SlotRef a dynamic variable, dependent for its size on the total number of possible rows
Change from using the ACTIVE_ROWS_LIMIT constant to using the m_dwTotalRows member of the query
Index: rowset.h
===================================================================
RCS file: /cvsroot/myoledb/myoledb3/rowset.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- rowset.h 20 Sep 2005 14:44:48 -0000 1.1.1.1
+++ rowset.h 18 Jan 2006 09:13:27 -0000 1.2
@@ -244,7 +244,7 @@
//@cmember
ULONG m_FirstFreeSlot;
//@cmember
- SLOTREF m_SlotRef[ACTIVE_ROWS_LIMIT];
+ SLOTREF* m_SlotRef;
//@cmember
BOOL m_LastDirection;
Index: rowset.cpp
===================================================================
RCS file: /cvsroot/myoledb/myoledb3/rowset.cpp,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -d -r1.1.1.1 -r1.2
--- rowset.cpp 20 Sep 2005 14:44:46 -0000 1.1.1.1
+++ rowset.cpp 18 Jan 2006 09:13:27 -0000 1.2
@@ -143,6 +143,13 @@
if (m_pCreator != NULL)
m_pCreator->Release();
+ // Delete m_SlotRef
+ if (m_SlotRef)
+ {
+ delete [] m_SlotRef;
+ m_SlotRef = NULL;
+ }
+
// Decrement global object count.
OBJECT_DESTRUCTED();
@@ -185,6 +192,11 @@
// Establish pointer to CData
m_pData = pData;
+ // allocate m_SlotRef object
+ m_SlotRef = new SLOTREF[pData->m_dwTotalRows];
+ if (m_SlotRef == NULL)
+ return FALSE;
+
// allocate utility object that manages our properties
if( m_pSession )
m_pUtilProp = new CUtilProp( m_pSession->m_pCDataSource, m_pSession->m_pUtilProp );
@@ -426,16 +438,16 @@
return E_FAIL;
// Here we are allocating buffer for our rowset.
- // It will will be static and its size will be ACTIVE_ROWS_LIMIT
- if (FAILED( GetNextSlots(m_pIBuffer, ACTIVE_ROWS_LIMIT + 1, &m_irowMin) ))
+ // It will will be static and its size will be the number of rows in the query
+ if (FAILED( GetNextSlots(m_pIBuffer, m_pData->m_dwTotalRows + 1, &m_irowMin) ))
return E_FAIL;
- for ( ULONG i = 0; i < ACTIVE_ROWS_LIMIT; i++ )
+ for ( ULONG i = 0; i < m_pData->m_dwTotalRows; i++ )
{
m_SlotRef[ i ].hRow = m_irowMin + i + 1;
m_SlotRef[ i ].NextSlot = i + 1;
}
- m_SlotRef[ACTIVE_ROWS_LIMIT - 1].NextSlot = 0xFFFFFFFF;
+ m_SlotRef[m_pData->m_dwTotalRows - 1].NextSlot = 0xFFFFFFFF;
m_FirstFreeSlot = 0;
return S_OK;
@@ -1081,7 +1093,7 @@
ULONG CRowset::GetSlotNumber( HROW hRow)
{
TRACE( "CRowset::GetSlotNumber" );
- for ( ULONG i = 0; i < ACTIVE_ROWS_LIMIT; i++ )
+ for ( ULONG i = 0; i < m_pData->m_dwTotalRows; i++ )
if ( hRow == m_SlotRef[ i ].hRow )
return i;
return INVALID_SLOT_NUMBER;
|