RowSet: notify listeners when next() brings us afterLast

Change-Id: I6024352f9d7c68d8075d90b5954ec3ba662a06f0
This commit is contained in:
Lionel Elie Mamane
2015-01-22 11:13:14 +01:00
parent 4a7089ffdf
commit 47bd9bd00e

View File

@@ -591,12 +591,24 @@ sal_Bool SAL_CALL ORowSetBase::next( ) throw(SQLException, RuntimeException, st
bRet = m_pCache->next();
doCancelModification( );
// if we were afterLast before next() then we still are,
// i.e. bAfterLast implies m_pCache->isAfterLast()
if (bAfterLast)
assert(m_pCache->isAfterLast());
// so the only way bAfterLast != m_pCache->isAfterLast()
// would be that we just arrived there,
if (bAfterLast != m_pCache->isAfterLast())
{
assert(!bAfterLast);
assert(m_pCache->isAfterLast());
}
// in which case we *did* move the cursor
if ( bRet || bAfterLast != m_pCache->isAfterLast() )
{
// notification order
// - column values
// - cursorMoved
setCurrentRow( bRet, true, aOldValues, aGuard );
setCurrentRow( true, true, aOldValues, aGuard );
OSL_ENSURE(!m_bBeforeFirst,"BeforeFirst is true. I don't know why?");
}
else