[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