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.gran...@collabora.co.uk> AuthorDate: Thu Jul 30 12:37:14 2020 +0200 Commit: Noel Grandin <noel.gran...@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.gran...@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 { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits