Kaydet (Commit) 66d7540b authored tarafından Lionel Elie Mamane's avatar Lionel Elie Mamane Kaydeden (comit) Julien Nabet

dbaccess OStatementBase: correctly check database metadata

the previous test didn't make any sense:
 * if xMeta.is(), then the test evaluated to false
 * if !xMeta.is(), then it called supportsMultipleResultSets
   (or supportsBatchUpdates, respectively) on a NULL pointer,
   which guaranteed a segfault / assert.

Change-Id: I6d6b93350557936b924a286732ae6d4f5ab2ce56
Reviewed-on: https://gerrit.libreoffice.org/47118Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarJulien Nabet <serval2412@yahoo.fr>
üst aa1bfa6d
......@@ -321,7 +321,7 @@ Reference< XResultSet > SAL_CALL OStatementBase::getResultSet( )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsMultipleResultSets())
if (!xMeta.is() || !xMeta->supportsMultipleResultSets())
throwFunctionSequenceException(*this);
return Reference< XMultipleResults >(m_xAggregateAsSet, UNO_QUERY)->getResultSet();
......@@ -334,7 +334,7 @@ sal_Int32 SAL_CALL OStatementBase::getUpdateCount( )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsMultipleResultSets())
if (!xMeta.is() || !xMeta->supportsMultipleResultSets())
throwFunctionSequenceException(*this);
return Reference< XMultipleResults >(m_xAggregateAsSet, UNO_QUERY)->getUpdateCount();
......@@ -347,7 +347,7 @@ sal_Bool SAL_CALL OStatementBase::getMoreResults( )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsMultipleResultSets())
if (!xMeta.is() || !xMeta->supportsMultipleResultSets())
throwFunctionSequenceException(*this);
// free the previous results
......@@ -364,7 +364,7 @@ void SAL_CALL OStatementBase::addBatch( )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsBatchUpdates())
if (!xMeta.is() || !xMeta->supportsBatchUpdates())
throwFunctionSequenceException(*this);
Reference< XPreparedBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->addBatch();
......@@ -377,7 +377,7 @@ void SAL_CALL OStatementBase::clearBatch( )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsBatchUpdates())
if (!xMeta.is() || !xMeta->supportsBatchUpdates())
throwFunctionSequenceException(*this);
Reference< XPreparedBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->clearBatch();
......@@ -390,7 +390,7 @@ Sequence< sal_Int32 > SAL_CALL OStatementBase::executeBatch( )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsBatchUpdates())
if (!xMeta.is() || !xMeta->supportsBatchUpdates())
throwFunctionSequenceException(*this);
// free the previous results
......@@ -496,7 +496,7 @@ void OStatement::addBatch( const OUString& _rSQL )
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsBatchUpdates())
if (!xMeta.is() || !xMeta->supportsBatchUpdates())
throwFunctionSequenceException(*this);
OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) );
......@@ -509,7 +509,7 @@ void OStatement::clearBatch( )
::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsBatchUpdates())
if (!xMeta.is() || !xMeta->supportsBatchUpdates())
throwFunctionSequenceException(*this);
Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->clearBatch();
......@@ -521,7 +521,7 @@ Sequence< sal_Int32 > OStatement::executeBatch( )
::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
// first check the meta data
Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
if (!xMeta.is() && !xMeta->supportsBatchUpdates())
if (!xMeta.is() || !xMeta->supportsBatchUpdates())
throwFunctionSequenceException(*this);
return Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->executeBatch( );
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment