summaryrefslogtreecommitdiff
path: root/dbaccess/source
diff options
context:
space:
mode:
authorLionel Elie Mamane <lionel@mamane.lu>2017-12-28 06:16:30 +0100
committerJulien Nabet <serval2412@yahoo.fr>2017-12-28 09:36:46 +0100
commit66d7540bcf3f82de906a588f01d1fbedc3d2928c (patch)
tree88041254578e03a3905e4196e5e9f89c9e574a7b /dbaccess/source
parentaa1bfa6d18e73265f486ed1f9673ac8f0a4e6de5 (diff)
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/47118 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Diffstat (limited to 'dbaccess/source')
-rw-r--r--dbaccess/source/core/api/statement.cxx18
1 files changed, 9 insertions, 9 deletions
diff --git a/dbaccess/source/core/api/statement.cxx b/dbaccess/source/core/api/statement.cxx
index f25e08be6a43..54f412fcf065 100644
--- a/dbaccess/source/core/api/statement.cxx
+++ b/dbaccess/source/core/api/statement.cxx
@@ -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( );
}