[Libreoffice-commits] core.git: connectivity/source

Caolán McNamara caolanm at redhat.com
Mon Nov 14 08:54:16 UTC 2016


 connectivity/source/drivers/evoab2/NStatement.hxx |  102 ++++++++++++----------
 1 file changed, 58 insertions(+), 44 deletions(-)

New commits:
commit 6b35488c723e2f2266f7e377ad53a82af7b6fede
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Nov 13 21:08:48 2016 +0000

    coverity#1371279 Missing move assignment operator
    
    Change-Id: Ic1c1017184bff54360b0ea3b6f57e53d61cbe1d5

diff --git a/connectivity/source/drivers/evoab2/NStatement.hxx b/connectivity/source/drivers/evoab2/NStatement.hxx
index 54085d7..efdc5f2 100644
--- a/connectivity/source/drivers/evoab2/NStatement.hxx
+++ b/connectivity/source/drivers/evoab2/NStatement.hxx
@@ -69,67 +69,81 @@ namespace connectivity
             eFilterOther
         };
 
-        struct QueryData
+        class EBookQueryWrapper
         {
         private:
-            EBookQuery*     pQuery;
-
+            EBookQuery* mpQuery;
         public:
-            OUString                             sTable;
-            QueryFilterType                             eFilterType;
-            ::rtl::Reference< ::connectivity::OSQLColumns >  xSelectColumns;
-            SortDescriptor                              aSortOrder;
-
-            QueryData()
-                :pQuery( nullptr )
-                ,sTable()
-                ,eFilterType( eFilterOther )
-                ,xSelectColumns()
-                ,aSortOrder()
+            EBookQueryWrapper()
+                : mpQuery(nullptr)
             {
             }
-
-            QueryData( const QueryData& _rhs )
-                :pQuery( nullptr )
-                ,sTable()
-                ,eFilterType( eFilterOther )
-                ,xSelectColumns()
-                ,aSortOrder()
+            EBookQueryWrapper(const EBookQueryWrapper& rhs)
+                : mpQuery(rhs.mpQuery)
             {
-                *this = _rhs;
+                if (mpQuery)
+                    e_book_query_ref(mpQuery);
             }
-
-            QueryData& operator=( const QueryData& _rhs )
+            EBookQueryWrapper(EBookQueryWrapper&& rhs)
+                : mpQuery(rhs.mpQuery)
             {
-                if ( this == &_rhs )
-                    return *this;
-
-                setQuery( _rhs.pQuery );
-                sTable = _rhs.sTable;
-                eFilterType = _rhs.eFilterType;
-                xSelectColumns = _rhs.xSelectColumns;
-                aSortOrder = _rhs.aSortOrder;
-
+                rhs.mpQuery = nullptr;
+            }
+            void reset(EBookQuery* pQuery)
+            {
+                if (mpQuery)
+                    e_book_query_unref(mpQuery);
+                mpQuery = pQuery;
+                if (mpQuery)
+                    e_book_query_ref(mpQuery);
+            }
+            EBookQueryWrapper& operator=(const EBookQueryWrapper& rhs)
+            {
+                if (this != &rhs)
+                    reset(rhs.mpQuery);
                 return *this;
             }
-
-            ~QueryData()
+            EBookQueryWrapper& operator=(EBookQueryWrapper&& rhs)
             {
-                setQuery( nullptr );
+                if (mpQuery)
+                    e_book_query_unref(mpQuery);
+                mpQuery = rhs.mpQuery;
+                rhs.mpQuery = nullptr;
+                return *this;
             }
+            ~EBookQueryWrapper()
+            {
+                if (mpQuery)
+                    e_book_query_unref(mpQuery);
+            }
+            EBookQuery* getQuery() const
+            {
+                return mpQuery;
+            }
+        };
 
-            EBookQuery* getQuery() const { return pQuery; }
+        struct QueryData
+        {
+        private:
+            EBookQueryWrapper aQuery;
+
+        public:
+            OUString sTable;
+            QueryFilterType eFilterType;
+            rtl::Reference<connectivity::OSQLColumns>  xSelectColumns;
+            SortDescriptor aSortOrder;
 
-            void setQuery( EBookQuery* _pQuery )
+            QueryData()
+                : sTable()
+                , eFilterType( eFilterOther )
+                , xSelectColumns()
+                , aSortOrder()
             {
-                if ( pQuery )
-                    e_book_query_unref( pQuery );
-                pQuery = _pQuery;
-                if ( pQuery )
-                    e_book_query_ref( pQuery );
             }
-        };
 
+            EBookQuery* getQuery() const { return aQuery.getQuery(); }
+            void setQuery(EBookQuery* pQuery) { aQuery.reset(pQuery); }
+        };
 
         //************ Class: OCommonStatement
         // is a base class for the normal statement and for the prepared statement


More information about the Libreoffice-commits mailing list