[Libreoffice-commits] core.git: include/unotools unotools/source

Caolán McNamara caolanm at redhat.com
Thu Nov 3 11:24:10 UTC 2016


 include/unotools/confignode.hxx       |    3 ++
 unotools/source/config/confignode.cxx |   46 ++++++++++++++++++++++++++++------
 2 files changed, 42 insertions(+), 7 deletions(-)

New commits:
commit 11a1b70da2f8d788f18cd0c4b8a4c5d0386aa72e
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Nov 3 10:38:22 2016 +0000

    coverity#1371313 Missing move assignment operator
    
    Change-Id: I07a9d7fe837c18e66b4a2a57186f1f9b0d44daee

diff --git a/include/unotools/confignode.hxx b/include/unotools/confignode.hxx
index cae0bd9..83f3ee5 100644
--- a/include/unotools/confignode.hxx
+++ b/include/unotools/confignode.hxx
@@ -74,9 +74,12 @@ namespace utl
         OConfigurationNode() :m_bEscapeNames(false) { }
         /// copy ctor
         OConfigurationNode(const OConfigurationNode& _rSource);
+        /// move ctor
+        OConfigurationNode(OConfigurationNode&& _rSource);
 
         /// assigment
         OConfigurationNode& operator=(const OConfigurationNode& _rSource);
+        OConfigurationNode& operator=(OConfigurationNode&& _rSource);
 
         /// dtor
         virtual ~OConfigurationNode() override {}
diff --git a/unotools/source/config/confignode.cxx b/unotools/source/config/confignode.cxx
index 4d0eec9..9342658 100644
--- a/unotools/source/config/confignode.cxx
+++ b/unotools/source/config/confignode.cxx
@@ -78,13 +78,27 @@ namespace utl
     }
 
     OConfigurationNode::OConfigurationNode(const OConfigurationNode& _rSource)
-        :OEventListenerAdapter()
-        ,m_xHierarchyAccess(_rSource.m_xHierarchyAccess)
-        ,m_xDirectAccess(_rSource.m_xDirectAccess)
-        ,m_xReplaceAccess(_rSource.m_xReplaceAccess)
-        ,m_xContainerAccess(_rSource.m_xContainerAccess)
-        ,m_bEscapeNames(_rSource.m_bEscapeNames)
-        ,m_sCompletePath(_rSource.m_sCompletePath)
+        : OEventListenerAdapter()
+        , m_xHierarchyAccess(_rSource.m_xHierarchyAccess)
+        , m_xDirectAccess(_rSource.m_xDirectAccess)
+        , m_xReplaceAccess(_rSource.m_xReplaceAccess)
+        , m_xContainerAccess(_rSource.m_xContainerAccess)
+        , m_bEscapeNames(_rSource.m_bEscapeNames)
+        , m_sCompletePath(_rSource.m_sCompletePath)
+    {
+        Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY);
+        if (xConfigNodeComp.is())
+            startComponentListening(xConfigNodeComp);
+    }
+
+    OConfigurationNode::OConfigurationNode(OConfigurationNode&& _rSource)
+        : OEventListenerAdapter()
+        , m_xHierarchyAccess(std::move(_rSource.m_xHierarchyAccess))
+        , m_xDirectAccess(std::move(_rSource.m_xDirectAccess))
+        , m_xReplaceAccess(std::move(_rSource.m_xReplaceAccess))
+        , m_xContainerAccess(std::move(_rSource.m_xContainerAccess))
+        , m_bEscapeNames(std::move(_rSource.m_bEscapeNames))
+        , m_sCompletePath(std::move(_rSource.m_sCompletePath))
     {
         Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY);
         if (xConfigNodeComp.is())
@@ -109,6 +123,24 @@ namespace utl
         return *this;
     }
 
+    OConfigurationNode& OConfigurationNode::operator=(OConfigurationNode&& _rSource)
+    {
+        stopAllComponentListening();
+
+        m_xHierarchyAccess = std::move(_rSource.m_xHierarchyAccess);
+        m_xDirectAccess = std::move(_rSource.m_xDirectAccess);
+        m_xContainerAccess = std::move(_rSource.m_xContainerAccess);
+        m_xReplaceAccess = std::move(_rSource.m_xReplaceAccess);
+        m_bEscapeNames = std::move(_rSource.m_bEscapeNames);
+        m_sCompletePath = std::move(_rSource.m_sCompletePath);
+
+        Reference< XComponent > xConfigNodeComp(m_xDirectAccess, UNO_QUERY);
+        if (xConfigNodeComp.is())
+            startComponentListening(xConfigNodeComp);
+
+        return *this;
+    }
+
     void OConfigurationNode::_disposing( const EventObject& _rSource )
     {
         Reference< XComponent > xDisposingSource(_rSource.Source, UNO_QUERY);


More information about the Libreoffice-commits mailing list