dba34d: #i116509# check if first and previous work

This commit is contained in:
Ocke Janssen
2011-03-10 12:54:21 +01:00
parent 7bd6550082
commit 0840df75de
7 changed files with 46 additions and 23 deletions

View File

@@ -400,7 +400,7 @@ void SAL_CALL OResultSet::beforeFirst( ) throw(SQLException, RuntimeException)
if(first())
previous();
m_bOnFirstAfterOpen = !previous();
}
// -------------------------------------------------------------------------
void SAL_CALL OResultSet::afterLast( ) throw(SQLException, RuntimeException)

View File

@@ -242,7 +242,7 @@ void ODbaseTable::AllocBuffer()
}
// Falls noch kein Puffer vorhanden: allozieren:
if (m_pBuffer == NULL && nSize)
if (m_pBuffer == NULL && nSize > 0)
{
m_nBufferSize = nSize;
m_pBuffer = new sal_uInt8[m_nBufferSize+1];
@@ -504,11 +504,14 @@ SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& r
sal_uIntPtr nTell = rStream.Tell() % 512;
sal_uInt16 nBufferSize = rStream.GetBufferSize();
sal_uIntPtr nSize = nBufferSize - nTell;
char* pEmptyData = new char[nSize];
memset(pEmptyData,0x00,nSize);
rStream.Write((sal_uInt8*)pEmptyData,nSize);
rStream.Seek(nTell);
delete [] pEmptyData;
if ( nSize <= nBufferSize )
{
char* pEmptyData = new char[nSize];
memset(pEmptyData,0x00,nSize);
rStream.Write((sal_uInt8*)pEmptyData,nSize);
rStream.Seek(nTell);
delete [] pEmptyData;
}
}
return rStream;
}

View File

@@ -2822,7 +2822,7 @@ void ODbaseTable::AllocBuffer()
}
// Falls noch kein Puffer vorhanden: allozieren:
if (m_pBuffer == NULL && nSize)
if (m_pBuffer == NULL && nSize > 0)
{
m_nBufferSize = nSize;
m_pBuffer = new sal_uInt8[m_nBufferSize+1];

View File

@@ -926,11 +926,14 @@ SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& r
sal_uIntPtr nTell = rStream.Tell() % PAGE_SIZE;
sal_uInt16 nBufferSize = rStream.GetBufferSize();
sal_uIntPtr nRemainSize = nBufferSize - nTell;
char* pEmptyData = new char[nRemainSize];
memset(pEmptyData,0x00,nRemainSize);
rStream.Write((sal_uInt8*)pEmptyData,nRemainSize);
rStream.Seek(nTell);
delete [] pEmptyData;
if ( nRemainSize <= nBufferSize )
{
char* pEmptyData = new char[nRemainSize];
memset(pEmptyData,0x00,nRemainSize);
rStream.Write((sal_uInt8*)pEmptyData,nRemainSize);
rStream.Seek(nTell);
delete [] pEmptyData;
}
}
return rStream;
}

View File

@@ -1365,15 +1365,24 @@ sal_Bool OResultSet::isBookmarkable() const
//------------------------------------------------------------------------------
void OResultSet::setFetchDirection(sal_Int32 _par0)
{
N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_CURSOR_TYPE,(SQLPOINTER)_par0,SQL_IS_UINTEGER);
OSL_ENSURE(_par0>0,"Illegal fetch direction!");
if ( _par0 > 0 )
{
N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_CURSOR_TYPE,(SQLPOINTER)_par0,SQL_IS_UINTEGER);
}
}
//------------------------------------------------------------------------------
void OResultSet::setFetchSize(sal_Int32 _par0)
{
N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_ARRAY_SIZE,(SQLPOINTER)_par0,SQL_IS_UINTEGER);
delete m_pRowStatusArray;
m_pRowStatusArray = new SQLUSMALLINT[_par0];
N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_STATUS_PTR,m_pRowStatusArray,SQL_IS_POINTER);
OSL_ENSURE(_par0>0,"Illegal fetch size!");
if ( _par0 > 0 )
{
N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_ARRAY_SIZE,(SQLPOINTER)_par0,SQL_IS_UINTEGER);
delete m_pRowStatusArray;
m_pRowStatusArray = new SQLUSMALLINT[_par0];
N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_STATUS_PTR,m_pRowStatusArray,SQL_IS_POINTER);
}
}
// -------------------------------------------------------------------------
IPropertyArrayHelper* OResultSet::createArrayHelper( ) const

View File

@@ -60,7 +60,11 @@ OResultSetMetaData::~OResultSetMetaData()
);
::rtl::OUString sValue;
if ( nRet == SQL_SUCCESS )
{
if ( nRealLen < 0 )
nRealLen = BUFFER_LEN;
sValue = ::rtl::OUString(pName,nRealLen,m_pConnection->getTextEncoding());
}
delete [] pName;
OTools::ThrowException(m_pConnection,nRet,m_aStatementHandle,SQL_HANDLE_STMT,*this);
if(nRealLen > BUFFER_LEN)
@@ -74,7 +78,7 @@ OResultSetMetaData::~OResultSetMetaData()
&nRealLen,
NULL
);
if ( nRet == SQL_SUCCESS )
if ( nRet == SQL_SUCCESS && nRealLen > 0)
sValue = ::rtl::OUString(pName,nRealLen,m_pConnection->getTextEncoding());
delete [] pName;
OTools::ThrowException(m_pConnection,nRet,m_aStatementHandle,SQL_HANDLE_STMT,*this);

View File

@@ -875,12 +875,16 @@ void OStatement_Base::setFetchDirection(sal_Int32 _par0)
void OStatement_Base::setFetchSize(sal_Int32 _par0)
{
OSL_ENSURE(m_aStatementHandle,"StatementHandle is null!");
OSL_ENSURE(_par0>0,"Illegal fetch size!");
if ( _par0 > 0 )
{
SQLRETURN nRetCode = N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_ARRAY_SIZE,(SQLPOINTER)_par0,SQL_IS_UINTEGER);
SQLRETURN nRetCode = N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_ARRAY_SIZE,(SQLPOINTER)_par0,SQL_IS_UINTEGER);
delete m_pRowStatusArray;
m_pRowStatusArray = new SQLUSMALLINT[_par0];
nRetCode = N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_STATUS_PTR,m_pRowStatusArray,SQL_IS_POINTER);
delete m_pRowStatusArray;
m_pRowStatusArray = new SQLUSMALLINT[_par0];
nRetCode = N3SQLSetStmtAttr(m_aStatementHandle,SQL_ATTR_ROW_STATUS_PTR,m_pRowStatusArray,SQL_IS_POINTER);
}
}
//------------------------------------------------------------------------------
void OStatement_Base::setMaxFieldSize(sal_Int32 _par0)