dbaccess/source/core/api/statement.cxx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
New commits: commit 66d7540bcf3f82de906a588f01d1fbedc3d2928c Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Thu Dec 28 06:16:30 2017 +0100 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 <c...@libreoffice.org> Reviewed-by: Julien Nabet <serval2...@yahoo.fr> 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( ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits