summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-07-30 12:37:14 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-07-30 15:24:59 +0200
commit45af02da0fe4f46e6a72ac6821b4ecce4f55de0e (patch)
treed7d5a805e640f7983b7e8e7c9290aad5dfbd6bb4 /connectivity
parentcb8e8d88f38901310ed28e315201fb1c8e80b7e5 (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')
-rw-r--r--connectivity/source/drivers/mork/MQueryHelper.cxx4
-rw-r--r--connectivity/source/drivers/mork/MQueryHelper.hxx6
-rw-r--r--connectivity/source/drivers/mork/MResultSet.cxx10
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
{