diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-30 12:37:14 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-30 15:24:59 +0200 |
commit | 45af02da0fe4f46e6a72ac6821b4ecce4f55de0e (patch) | |
tree | d7d5a805e640f7983b7e8e7c9290aad5dfbd6bb4 /connectivity/source | |
parent | cb8e8d88f38901310ed28e315201fb1c8e80b7e5 (diff) |
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@collabora.co.uk>
Diffstat (limited to 'connectivity/source')
-rw-r--r-- | connectivity/source/drivers/mork/MQueryHelper.cxx | 4 | ||||
-rw-r--r-- | connectivity/source/drivers/mork/MQueryHelper.hxx | 6 | ||||
-rw-r--r-- | connectivity/source/drivers/mork/MResultSet.cxx | 10 |
3 files changed, 10 insertions, 10 deletions
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 { |