[Libreoffice-commits] core.git: connectivity/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Thu Jul 30 13:25:44 UTC 2020
connectivity/source/drivers/mork/MQueryHelper.cxx | 4 ++--
connectivity/source/drivers/mork/MQueryHelper.hxx | 6 +++---
connectivity/source/drivers/mork/MResultSet.cxx | 10 +++++-----
3 files changed, 10 insertions(+), 10 deletions(-)
New commits:
commit 45af02da0fe4f46e6a72ac6821b4ecce4f55de0e
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Jul 30 12:37:14 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Jul 30 15:24:59 2020 +0200
fix leak in Mork::OResultSet
Change-Id: I2e915762aca653acb7f9e1b322459f83297a997f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99786
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/connectivity/source/drivers/mork/MQueryHelper.cxx b/connectivity/source/drivers/mork/MQueryHelper.cxx
index aaf8cac6a682..6c63e2889ec8 100644
--- a/connectivity/source/drivers/mork/MQueryHelper.cxx
+++ b/connectivity/source/drivers/mork/MQueryHelper.cxx
@@ -235,7 +235,7 @@ std::vector<bool> entryMatchedByExpression(MQueryHelper* _aQuery, MQueryExpressi
for (auto const& expr : _aExpr->getExpressions())
{
if ( expr->isStringExpr() ) {
- MQueryExpressionString* evStr = static_cast<MQueryExpressionString*> (expr);
+ MQueryExpressionString* evStr = static_cast<MQueryExpressionString*> (expr.get());
// Set the 'name' property of the boolString.
OString attrName = _aQuery->getColumnAlias().getProgrammaticNameOrFallbackToUTF8Alias( evStr->getName() );
SAL_INFO("connectivity.mork", "Name = " << attrName);
@@ -287,7 +287,7 @@ std::vector<bool> entryMatchedByExpression(MQueryHelper* _aQuery, MQueryExpressi
}
else if ( expr->isExpr() ) {
SAL_INFO("connectivity.mork", "Appending Subquery Expression");
- MQueryExpression* queryExpression = static_cast<MQueryExpression*> (expr);
+ MQueryExpression* queryExpression = static_cast<MQueryExpression*> (expr.get());
// recursive call
std::vector<bool> subquery_result = entryMatchedByExpression(_aQuery, queryExpression, entry);
MQueryExpression::bool_cond condition = queryExpression->getExpressionCondition();
diff --git a/connectivity/source/drivers/mork/MQueryHelper.hxx b/connectivity/source/drivers/mork/MQueryHelper.hxx
index 7b6a9fc59763..dc9bde32f615 100644
--- a/connectivity/source/drivers/mork/MQueryHelper.hxx
+++ b/connectivity/source/drivers/mork/MQueryHelper.hxx
@@ -99,7 +99,7 @@ namespace connectivity::mork
friend class MQueryHelper;
public:
- typedef std::vector< MQueryExpressionBase* > ExprVector;
+ typedef std::vector< std::unique_ptr<MQueryExpressionBase> > ExprVector;
typedef enum {
AND,
@@ -110,8 +110,8 @@ namespace connectivity::mork
void setExpressionCondition( bool_cond _cond )
{ m_aExprCondType = _cond; }
- void addExpression(MQueryExpressionBase * expr)
- { m_aExprVector.push_back(expr); }
+ void addExpression(std::unique_ptr<MQueryExpressionBase> expr)
+ { m_aExprVector.push_back(std::move(expr)); }
ExprVector const & getExpressions( ) const
{ return m_aExprVector; }
diff --git a/connectivity/source/drivers/mork/MResultSet.cxx b/connectivity/source/drivers/mork/MResultSet.cxx
index 6918479a86c0..4c51bf414e3f 100644
--- a/connectivity/source/drivers/mork/MResultSet.cxx
+++ b/connectivity/source/drivers/mork/MResultSet.cxx
@@ -710,9 +710,9 @@ void OResultSet::analyseWhereClause( const OSQLParseNode* parseT
SQL_ISPUNCTUATION(parseTree->getChild(0),"(") &&
SQL_ISPUNCTUATION(parseTree->getChild(2),")"))
{
- MQueryExpression *subExpression = new MQueryExpression();
+ auto subExpression = std::make_unique<MQueryExpression>();
analyseWhereClause( parseTree->getChild( 1 ), *subExpression );
- queryExpression.addExpression( subExpression );
+ queryExpression.addExpression( std::move(subExpression) );
}
else if ((SQL_ISRULE(parseTree,search_condition) || SQL_ISRULE(parseTree,boolean_term))
&& parseTree->count() == 3) // Handle AND/OR
@@ -769,7 +769,7 @@ void OResultSet::analyseWhereClause( const OSQLParseNode* parseT
if ( columnName == "0" && op == MQueryOp::Is && matchString == "1" ) {
m_bIsAlwaysFalseQuery = true;
}
- queryExpression.addExpression( new MQueryExpressionString( columnName, op, matchString ));
+ queryExpression.addExpression( std::make_unique<MQueryExpressionString>( columnName, op, matchString ));
}
else if (SQL_ISRULE(parseTree,like_predicate))
{
@@ -901,7 +901,7 @@ void OResultSet::analyseWhereClause( const OSQLParseNode* parseT
}
}
- queryExpression.addExpression( new MQueryExpressionString( columnName, op, matchString ));
+ queryExpression.addExpression( std::make_unique<MQueryExpressionString>( columnName, op, matchString ));
}
else if (SQL_ISRULE(parseTree,test_for_null))
{
@@ -926,7 +926,7 @@ void OResultSet::analyseWhereClause( const OSQLParseNode* parseT
OUString sTableRange;
m_pSQLIterator->getColumnRange(parseTree->getChild(0),columnName,sTableRange);
- queryExpression.addExpression( new MQueryExpressionString( columnName, op ));
+ queryExpression.addExpression( std::make_unique<MQueryExpressionString>( columnName, op ));
}
else
{
More information about the Libreoffice-commits
mailing list