[Libreoffice-commits] core.git: 2 commits - sw/inc sw/source

Noel Grandin noel.grandin at collabora.co.uk
Fri Jun 29 06:41:58 UTC 2018


 sw/inc/ndgrf.hxx                  |    2 +-
 sw/source/core/graphic/ndgrf.cxx  |   15 ++++++---------
 sw/source/core/inc/dbg_lay.hxx    |   20 ++++----------------
 sw/source/core/layout/dbg_lay.cxx |   25 +++++++++++--------------
 4 files changed, 22 insertions(+), 40 deletions(-)

New commits:
commit 99147c8303016498f4bfcef3d5c1fe126ad43076
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Thu Jun 28 14:01:29 2018 +0200

    loplugin:useuniqueptr in SwGrfNode
    
    Change-Id: I9f0993f7fbbdaf7552fe0b0c19d3fca691471fa8
    Reviewed-on: https://gerrit.libreoffice.org/56626
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sw/inc/ndgrf.hxx b/sw/inc/ndgrf.hxx
index e44c72e69309..a5e4e0cc2969 100644
--- a/sw/inc/ndgrf.hxx
+++ b/sw/inc/ndgrf.hxx
@@ -37,7 +37,7 @@ class SW_DLLPUBLIC SwGrfNode: public SwNoTextNode
     friend class SwNodes;
 
     GraphicObject maGrfObj;
-    GraphicObject *mpReplacementGraphic;
+    std::unique_ptr<GraphicObject> mpReplacementGraphic;
     tools::SvRef<sfx2::SvBaseLink> refLink;       ///< If graphics only as link then pointer is set.
     Size nGrfSize;
     bool bInSwapIn              :1;
diff --git a/sw/source/core/graphic/ndgrf.cxx b/sw/source/core/graphic/ndgrf.cxx
index 00e63f64a918..63a0c43d946c 100644
--- a/sw/source/core/graphic/ndgrf.cxx
+++ b/sw/source/core/graphic/ndgrf.cxx
@@ -138,8 +138,7 @@ bool SwGrfNode::ReRead(
 {
     bool bReadGrf = false;
     bool bSetTwipSize = true;
-    delete mpReplacementGraphic;
-    mpReplacementGraphic = nullptr;
+    mpReplacementGraphic.reset();
 
     OSL_ENSURE( pGraphic || !rGrfName.isEmpty(),
             "GraphicNode without a name, Graphic or GraphicObject" );
@@ -281,8 +280,7 @@ bool SwGrfNode::ReRead(
 
 SwGrfNode::~SwGrfNode()
 {
-    delete mpReplacementGraphic;
-    mpReplacementGraphic = nullptr;
+    mpReplacementGraphic.reset();
 
     // #i73788#
     mpThreadConsumer.reset();
@@ -390,17 +388,17 @@ const GraphicObject* SwGrfNode::GetReplacementGrfObj() const
 
         if(rVectorGraphicDataPtr.get())
         {
-            const_cast< SwGrfNode* >(this)->mpReplacementGraphic = new GraphicObject(rVectorGraphicDataPtr->getReplacement());
+            const_cast< SwGrfNode* >(this)->mpReplacementGraphic.reset( new GraphicObject(rVectorGraphicDataPtr->getReplacement()) );
         }
         else if (GetGrfObj().GetGraphic().hasPdfData() ||
                  GetGrfObj().GetGraphic().GetType() == GraphicType::GdiMetafile)
         {
             // Replacement graphic for PDF and metafiles is just the bitmap.
-            const_cast<SwGrfNode*>(this)->mpReplacementGraphic = new GraphicObject(GetGrfObj().GetGraphic().GetBitmapEx());
+            const_cast<SwGrfNode*>(this)->mpReplacementGraphic.reset( new GraphicObject(GetGrfObj().GetGraphic().GetBitmapEx()) );
         }
     }
 
-    return mpReplacementGraphic;
+    return mpReplacementGraphic.get();
 }
 
 SwContentNode *SwGrfNode::SplitContentNode( const SwPosition & )
@@ -470,8 +468,7 @@ bool SwGrfNode::SwapIn(bool bWaitForData)
             else if( GraphicType::Default == maGrfObj.GetType() )
             {
                 // no default bitmap anymore, thus re-paint
-                delete mpReplacementGraphic;
-                mpReplacementGraphic = nullptr;
+                mpReplacementGraphic.reset();
 
                 maGrfObj.SetGraphic( Graphic() );
                 onGraphicChanged();
commit 95486bac7090d163d19fe8d35521ac0ef4473a93
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Thu Jun 28 13:57:43 2018 +0200

    loplugin:useuniqueptr in SwEnterLeave
    
    Change-Id: I948c146f675675c1902c158be4d97b6d19679a51
    Reviewed-on: https://gerrit.libreoffice.org/56625
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sw/source/core/inc/dbg_lay.hxx b/sw/source/core/inc/dbg_lay.hxx
index 95e491782ff6..5c46809f88ae 100644
--- a/sw/source/core/inc/dbg_lay.hxx
+++ b/sw/source/core/inc/dbg_lay.hxx
@@ -21,6 +21,7 @@
 #define INCLUDED_SW_SOURCE_CORE_INC_DBG_LAY_HXX
 
 #include <o3tl/typed_flags_set.hxx>
+#include <memory>
 
 enum class PROT {
     FileInit   = 0x00000000,
@@ -84,23 +85,10 @@ public:
 
 class SwEnterLeave
 {
-    SwImplEnterLeave* pImpl;
-    void Ctor( const SwFrame* pFrame, PROT nFunc, DbgAction nAct, void* pPar );
-    void Dtor();
-
+    std::unique_ptr<SwImplEnterLeave> pImpl;
 public:
-    SwEnterLeave( const SwFrame* pFrame, PROT nFunc, DbgAction nAct, void* pPar )
-    {
-        if( SwProtocol::Record( nFunc ) )
-            Ctor( pFrame, nFunc, nAct, pPar );
-        else
-            pImpl = nullptr;
-    }
-    ~SwEnterLeave()
-    {
-        if( pImpl )
-            Dtor();
-    }
+    SwEnterLeave( const SwFrame* pFrame, PROT nFunc, DbgAction nAct, void* pPar );
+    ~SwEnterLeave();
 };
 
 #define PROTOCOL( pFrame, nFunc, nAct, pPar ) {   if( SwProtocol::Record( nFunc ) )\
diff --git a/sw/source/core/layout/dbg_lay.cxx b/sw/source/core/layout/dbg_lay.cxx
index 203f07893296..8db7a0d79a22 100644
--- a/sw/source/core/layout/dbg_lay.cxx
+++ b/sw/source/core/layout/dbg_lay.cxx
@@ -860,37 +860,34 @@ void SwImplProtocol::DeleteFrame( sal_uInt16 nId )
     pFrameIds->erase(nId);
 }
 
-/* SwEnterLeave::Ctor(..) is called from the (inline-)CTor if the function should
- * be logged.
+/*
  * The task here is to find the right SwImplEnterLeave object based on the
  * function; everything else is then done in his Ctor/Dtor.
  */
-void SwEnterLeave::Ctor( const SwFrame* pFrame, PROT nFunc, DbgAction nAct, void* pPar )
+SwEnterLeave::SwEnterLeave( const SwFrame* pFrame, PROT nFunc, DbgAction nAct, void* pPar )
 {
+    if( !SwProtocol::Record( nFunc ) )
+        return;
     switch( nFunc )
     {
         case PROT::AdjustN :
         case PROT::Grow:
-        case PROT::Shrink : pImpl = new SwSizeEnterLeave( pFrame, nFunc, nAct, pPar ); break;
+        case PROT::Shrink : pImpl.reset( new SwSizeEnterLeave( pFrame, nFunc, nAct, pPar ) ); break;
         case PROT::MoveFwd:
-        case PROT::MoveBack : pImpl = new SwUpperEnterLeave( pFrame, nFunc, nAct, pPar ); break;
-        case PROT::FrmChanges : pImpl = new SwFrameChangesLeave( pFrame, nFunc, nAct, pPar ); break;
-        default: pImpl = new SwImplEnterLeave( pFrame, nFunc, nAct, pPar ); break;
+        case PROT::MoveBack : pImpl.reset( new SwUpperEnterLeave( pFrame, nFunc, nAct, pPar ) ); break;
+        case PROT::FrmChanges : pImpl.reset( new SwFrameChangesLeave( pFrame, nFunc, nAct, pPar ) ); break;
+        default: pImpl.reset( new SwImplEnterLeave( pFrame, nFunc, nAct, pPar ) ); break;
     }
     pImpl->Enter();
 }
 
-/* SwEnterLeave::Dtor() only calls the Dtor of the SwImplEnterLeave object. It's
- * just no inline because we don't want the SwImplEnterLeave definition inside
+/* This is not inline because we don't want the SwImplEnterLeave definition inside
  * dbg_lay.hxx.
  */
-void SwEnterLeave::Dtor()
+SwEnterLeave::~SwEnterLeave()
 {
-    if( pImpl )
-    {
+    if (pImpl)
         pImpl->Leave();
-        delete pImpl;
-    }
 }
 
 void SwImplEnterLeave::Enter()


More information about the Libreoffice-commits mailing list