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

Michael Stahl mstahl at redhat.com
Thu Jan 4 15:29:03 UTC 2018


 sw/source/core/inc/frame.hxx           |    8 +++--
 sw/source/core/inc/pagefrm.hxx         |    6 ++--
 sw/source/core/layout/calcmove.cxx     |    8 ++---
 sw/source/core/layout/fly.cxx          |   45 +++++++++++++++++++--------------
 sw/source/core/layout/flylay.cxx       |   15 +++++------
 sw/source/core/layout/pagechg.cxx      |    6 +---
 sw/source/core/layout/ssfrm.cxx        |   11 +++-----
 sw/source/core/layout/wsfrm.cxx        |    1 
 sw/source/core/swg/SwXMLTextBlocks.cxx |    7 +----
 9 files changed, 55 insertions(+), 52 deletions(-)

New commits:
commit 16e75d4b5df6d516873c2dcb39442d4bbda1efed
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jan 4 15:54:31 2018 +0100

    sw: replace local DELETEZ with unique_ptr
    
    Change-Id: I8c650a1dce327c5f4651e166ea998db0fd2292cd

diff --git a/sw/source/core/swg/SwXMLTextBlocks.cxx b/sw/source/core/swg/SwXMLTextBlocks.cxx
index 87fdb2b3c40a..c6d219d6fc95 100644
--- a/sw/source/core/swg/SwXMLTextBlocks.cxx
+++ b/sw/source/core/swg/SwXMLTextBlocks.cxx
@@ -336,7 +336,7 @@ ErrCode SwXMLTextBlocks::PutBlock()
 
         if ( xRoot.is() )
         {
-            SfxMedium* pTmpMedium = nullptr;
+            std::unique_ptr<SfxMedium> pTmpMedium;
             try
             {
                 uno::Reference< embed::XStorage > xTempStorage =
@@ -346,7 +346,7 @@ ErrCode SwXMLTextBlocks::PutBlock()
 
                 // TODO/LATER: no progress bar?!
                 // TODO/MBA: strange construct
-                pTmpMedium = new SfxMedium( xTempStorage, GetBaseURL() );
+                pTmpMedium.reset(new SfxMedium(xTempStorage, GetBaseURL()));
                 bool bTmpOK = pDocSh->SaveAsChildren( *pTmpMedium );
                 if( bTmpOK )
                     bTmpOK = pDocSh->SaveCompletedChildren();
@@ -357,9 +357,6 @@ ErrCode SwXMLTextBlocks::PutBlock()
             catch(const uno::Exception&)
             {
             }
-
-            if ( pTmpMedium )
-                DELETEZ( pTmpMedium );
         }
 
         if( !bOK )
commit 0af086beaaad8ded4f551ece0086ce990952ee16
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jan 4 15:52:06 2018 +0100

    sw: convert SwPageFrame::m_pSortedObjs to unique_ptr
    
    Change-Id: Id0cac6143c4c9278fc450048cc0b276d72d0c1a1

diff --git a/sw/source/core/inc/pagefrm.hxx b/sw/source/core/inc/pagefrm.hxx
index d49b5275893d..8c7ab3a92fdb 100644
--- a/sw/source/core/inc/pagefrm.hxx
+++ b/sw/source/core/inc/pagefrm.hxx
@@ -42,7 +42,7 @@ class SwPageFrame: public SwFootnoteBossFrame
 {
     friend class SwFrame;
 
-    SwSortedObjs *m_pSortedObjs;
+    std::unique_ptr<SwSortedObjs> m_pSortedObjs;
 
     SwPageDesc *m_pDesc; //PageDesc that describes the Page
 
@@ -117,8 +117,8 @@ public:
     void PrepareHeader();
     void PrepareFooter();
 
-    const SwSortedObjs  *GetSortedObjs() const  { return m_pSortedObjs; }
-          SwSortedObjs  *GetSortedObjs()          { return m_pSortedObjs; }
+    const SwSortedObjs *GetSortedObjs() const { return m_pSortedObjs.get(); }
+          SwSortedObjs *GetSortedObjs()       { return m_pSortedObjs.get(); }
 
     void AppendDrawObjToPage( SwAnchoredObject& _rNewObj );
     void RemoveDrawObjFromPage( SwAnchoredObject& _rToRemoveObj );
diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx
index 6057b2115b28..16f30d320444 100644
--- a/sw/source/core/layout/calcmove.cxx
+++ b/sw/source/core/layout/calcmove.cxx
@@ -644,11 +644,11 @@ void SwFrame::MakePos()
 }
 
 // #i28701# - new type <SwSortedObjs>
-static void lcl_CheckObjects( SwSortedObjs* pSortedObjs, const SwFrame* pFrame, long& rBot )
+static void lcl_CheckObjects(SwSortedObjs& rSortedObjs, const SwFrame* pFrame, long& rBot)
 {
     // And then there can be paragraph anchored frames that sit below their paragraph.
     long nMax = 0;
-    for (SwAnchoredObject* pObj : *pSortedObjs)
+    for (SwAnchoredObject* pObj : rSortedObjs)
     {
         // #i28701# - consider changed type of <SwSortedObjs>
         // entries.
@@ -729,13 +729,13 @@ size_t SwPageFrame::GetContentHeight(const long nTop, const long nBottom) const
         // protrude outside the Body/FootnoteCont.
         if (m_pSortedObjs && !pFrame->IsHeaderFrame() &&
             !pFrame->IsFooterFrame())
-            lcl_CheckObjects(m_pSortedObjs, pFrame, nBot);
+            lcl_CheckObjects(*m_pSortedObjs, pFrame, nBot);
         pFrame = pFrame->GetNext();
     }
     nBot += nBottom;
     // And the page anchored ones
     if (m_pSortedObjs)
-        lcl_CheckObjects(m_pSortedObjs, this, nBot);
+        lcl_CheckObjects(*m_pSortedObjs, this, nBot);
     nBot -= getFrameArea().Top();
 
     return nBot;
diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx
index ae487ebee352..b57b763d8e79 100644
--- a/sw/source/core/layout/flylay.cxx
+++ b/sw/source/core/layout/flylay.cxx
@@ -826,7 +826,9 @@ void SwPageFrame::AppendFlyToPage( SwFlyFrame *pNew )
         InvalidateFlyContent();
 
         if ( !m_pSortedObjs )
-            m_pSortedObjs = new SwSortedObjs();
+        {
+            m_pSortedObjs.reset(new SwSortedObjs());
+        }
 
         const bool bSuccessInserted = m_pSortedObjs->Insert( *pNew );
         OSL_ENSURE( bSuccessInserted, "Fly not inserted in Sorted." );
@@ -910,8 +912,7 @@ void SwPageFrame::RemoveFlyFromPage( SwFlyFrame *pToRemove )
         m_pSortedObjs->Remove(*pToRemove);
         if (!m_pSortedObjs->size())
         {
-            delete m_pSortedObjs;
-            m_pSortedObjs = nullptr;
+            m_pSortedObjs.reset();
         }
     }
 
@@ -968,13 +969,13 @@ void SwPageFrame::MoveFly( SwFlyFrame *pToMove, SwPageFrame *pDest )
         m_pSortedObjs->Remove( *pToMove );
         if ( !m_pSortedObjs->size() )
         {
-            DELETEZ( m_pSortedObjs );
+            m_pSortedObjs.reset();
         }
     }
 
     // Register
     if ( !pDest->GetSortedObjs() )
-        pDest->m_pSortedObjs = new SwSortedObjs();
+        pDest->m_pSortedObjs.reset(new SwSortedObjs());
 
     const bool bSuccessInserted = pDest->GetSortedObjs()->Insert( *pToMove );
     OSL_ENSURE( bSuccessInserted, "Fly not inserted in Sorted." );
@@ -1059,7 +1060,7 @@ void SwPageFrame::AppendDrawObjToPage( SwAnchoredObject& _rNewObj )
 
     if ( !m_pSortedObjs )
     {
-        m_pSortedObjs = new SwSortedObjs();
+        m_pSortedObjs.reset(new SwSortedObjs());
     }
     if ( !m_pSortedObjs->Insert( _rNewObj ) )
     {
@@ -1088,7 +1089,7 @@ void SwPageFrame::RemoveDrawObjFromPage( SwAnchoredObject& _rToRemoveObj )
         m_pSortedObjs->Remove( _rToRemoveObj );
         if ( !m_pSortedObjs->size() )
         {
-            DELETEZ( m_pSortedObjs );
+            m_pSortedObjs.reset();
         }
         if ( GetUpper() )
         {
diff --git a/sw/source/core/layout/pagechg.cxx b/sw/source/core/layout/pagechg.cxx
index 79abcfdf6f56..58ffeed1a424 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -169,7 +169,6 @@ void SwBodyFrame::Format( vcl::RenderContext* /*pRenderContext*/, const SwBorder
 
 SwPageFrame::SwPageFrame( SwFrameFormat *pFormat, SwFrame* pSib, SwPageDesc *pPgDsc ) :
     SwFootnoteBossFrame( pFormat, pSib ),
-    m_pSortedObjs( nullptr ),
     m_pDesc( pPgDsc ),
     m_nPhyPageNum( 0 )
 {
@@ -261,7 +260,7 @@ void SwPageFrame::DestroyImpl()
     }
 
     // empty FlyContainer, deletion of the Flys is done by the anchor (in base class SwFrame)
-    if ( m_pSortedObjs )
+    if (m_pSortedObjs)
     {
         // Objects can be anchored at pages that are before their anchors (why ever...).
         // In such cases, we would access already freed memory.
@@ -269,8 +268,7 @@ void SwPageFrame::DestroyImpl()
         {
             pAnchoredObj->SetPageFrame( nullptr );
         }
-        delete m_pSortedObjs;
-        m_pSortedObjs = nullptr; // reset to zero to prevent problems when detaching the Flys
+        m_pSortedObjs.reset(); // reset to zero to prevent problems when detaching the Flys
     }
 
     if ( !IsEmptyPage() ) //#59184# unnecessary for empty pages
commit 794e54cd34239006270a00a6e5017acc463063f9
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Jan 4 15:35:21 2018 +0100

    sw: convert SwFrame::mpDrawObjs to unique_ptr
    
    Change-Id: I0713e6fb2b3f2cfc3115daafe37ae5380f3e7938

diff --git a/sw/source/core/inc/frame.hxx b/sw/source/core/inc/frame.hxx
index 9d3ca61708de..7ecbefc600a9 100644
--- a/sw/source/core/inc/frame.hxx
+++ b/sw/source/core/inc/frame.hxx
@@ -32,6 +32,8 @@
 #include <com/sun/star/style/TabStop.hpp>
 #include <basegfx/matrix/b2dhommatrix.hxx>
 
+#include <memory>
+
 class SwLayoutFrame;
 class SwRootFrame;
 class SwPageFrame;
@@ -378,7 +380,7 @@ class SW_DLLPUBLIC SwFrame : public SwFrameAreaDefinition, public SwClient, publ
     SwPageFrame* ImplFindPageFrame();
 
 protected:
-    SwSortedObjs* mpDrawObjs;    // draw objects, can be 0
+    std::unique_ptr<SwSortedObjs> m_pDrawObjs; // draw objects, can be null
     SwFrameType mnFrameType;  //Who am I?
 
     bool mbInDtor      : 1;
@@ -524,8 +526,8 @@ public:
     // work with chain of FlyFrames
     void  AppendFly( SwFlyFrame *pNew );
     void  RemoveFly( SwFlyFrame *pToRemove );
-    const SwSortedObjs *GetDrawObjs() const { return mpDrawObjs; }
-          SwSortedObjs *GetDrawObjs()         { return mpDrawObjs; }
+    const SwSortedObjs *GetDrawObjs() const { return m_pDrawObjs.get(); }
+          SwSortedObjs *GetDrawObjs()       { return m_pDrawObjs.get(); }
     // #i28701# - change purpose of method and adjust its name
     void InvalidateObjs( const bool _bNoInvaOfAsCharAnchoredObjs = true );
 
diff --git a/sw/source/core/layout/fly.cxx b/sw/source/core/layout/fly.cxx
index b4d05f138fbf..0daef994f355 100644
--- a/sw/source/core/layout/fly.cxx
+++ b/sw/source/core/layout/fly.cxx
@@ -2007,9 +2007,11 @@ void SwFlyFrame::Cut()
 
 void SwFrame::AppendFly( SwFlyFrame *pNew )
 {
-    if ( !mpDrawObjs )
-        mpDrawObjs = new SwSortedObjs();
-    mpDrawObjs->Insert( *pNew );
+    if (!m_pDrawObjs)
+    {
+        m_pDrawObjs.reset(new SwSortedObjs());
+    }
+    m_pDrawObjs->Insert( *pNew );
     pNew->ChgAnchorFrame( this );
 
     // Register at the page
@@ -2049,9 +2051,11 @@ void SwFrame::RemoveFly( SwFlyFrame *pToRemove )
         }
     }
 
-    mpDrawObjs->Remove( *pToRemove );
-    if ( !mpDrawObjs->size() )
-        DELETEZ( mpDrawObjs );
+    m_pDrawObjs->Remove(*pToRemove);
+    if (!m_pDrawObjs->size())
+    {
+        m_pDrawObjs.reset();
+    }
 
     pToRemove->ChgAnchorFrame( nullptr );
 
@@ -2061,7 +2065,7 @@ void SwFrame::RemoveFly( SwFlyFrame *pToRemove )
 
 void SwFrame::AppendDrawObj( SwAnchoredObject& _rNewObj )
 {
-    assert(!mpDrawObjs || mpDrawObjs->is_sorted());
+    assert(!m_pDrawObjs || m_pDrawObjs->is_sorted());
 
     if ( dynamic_cast<const SwAnchoredDrawObject*>( &_rNewObj) ==  nullptr )
     {
@@ -2072,19 +2076,21 @@ void SwFrame::AppendDrawObj( SwAnchoredObject& _rNewObj )
     if ( dynamic_cast<const SwDrawVirtObj*>(_rNewObj.GetDrawObj()) ==  nullptr &&
          _rNewObj.GetAnchorFrame() && _rNewObj.GetAnchorFrame() != this )
     {
-        assert(!mpDrawObjs || mpDrawObjs->is_sorted());
+        assert(!m_pDrawObjs || m_pDrawObjs->is_sorted());
         // perform disconnect from layout, if 'master' drawing object is appended
         // to a new frame.
         static_cast<SwDrawContact*>(::GetUserCall( _rNewObj.GetDrawObj() ))->
                                                 DisconnectFromLayout( false );
-        assert(!mpDrawObjs || mpDrawObjs->is_sorted());
+        assert(!m_pDrawObjs || m_pDrawObjs->is_sorted());
     }
 
     if ( _rNewObj.GetAnchorFrame() != this )
     {
-        if ( !mpDrawObjs )
-            mpDrawObjs = new SwSortedObjs();
-        mpDrawObjs->Insert( _rNewObj );
+        if (!m_pDrawObjs)
+        {
+            m_pDrawObjs.reset(new SwSortedObjs());
+        }
+        m_pDrawObjs->Insert(_rNewObj);
         _rNewObj.ChgAnchorFrame( this );
     }
 
@@ -2110,7 +2116,7 @@ void SwFrame::AppendDrawObj( SwAnchoredObject& _rNewObj )
             }
             //The layer is part of the key used to sort the obj, so update
             //its position if the layer changed.
-            mpDrawObjs->Update(_rNewObj);
+            m_pDrawObjs->Update(_rNewObj);
         }
     }
 
@@ -2135,7 +2141,7 @@ void SwFrame::AppendDrawObj( SwAnchoredObject& _rNewObj )
         }
     }
 
-    assert(!mpDrawObjs || mpDrawObjs->is_sorted());
+    assert(!m_pDrawObjs || m_pDrawObjs->is_sorted());
 }
 
 void SwFrame::RemoveDrawObj( SwAnchoredObject& _rToRemoveObj )
@@ -2154,13 +2160,14 @@ void SwFrame::RemoveDrawObj( SwAnchoredObject& _rToRemoveObj )
     if ( pPage && pPage->GetSortedObjs() )
         pPage->RemoveDrawObjFromPage( _rToRemoveObj );
 
-    mpDrawObjs->Remove( _rToRemoveObj );
-    if ( !mpDrawObjs->size() )
-        DELETEZ( mpDrawObjs );
-
+    m_pDrawObjs->Remove(_rToRemoveObj);
+    if (!m_pDrawObjs->size())
+    {
+        m_pDrawObjs.reset();
+    }
     _rToRemoveObj.ChgAnchorFrame( nullptr );
 
-    assert(!mpDrawObjs || mpDrawObjs->is_sorted());
+    assert(!m_pDrawObjs || m_pDrawObjs->is_sorted());
 }
 
 void SwFrame::InvalidateObjs( const bool _bNoInvaOfAsCharAnchoredObjs )
diff --git a/sw/source/core/layout/ssfrm.cxx b/sw/source/core/layout/ssfrm.cxx
index 9934d1c4b4dd..180ceba1ff9c 100644
--- a/sw/source/core/layout/ssfrm.cxx
+++ b/sw/source/core/layout/ssfrm.cxx
@@ -338,11 +338,11 @@ void SwFrame::DestroyImpl()
         }
     }
 
-    if( mpDrawObjs )
+    if (m_pDrawObjs)
     {
-        for ( size_t i = mpDrawObjs->size(); i; )
+        for (size_t i = m_pDrawObjs->size(); i; )
         {
-            SwAnchoredObject* pAnchoredObj = (*mpDrawObjs)[--i];
+            SwAnchoredObject* pAnchoredObj = (*m_pDrawObjs)[--i];
             if ( dynamic_cast< const SwFlyFrame *>( pAnchoredObj ) !=  nullptr )
             {
                 SwFrame::DestroyFrame(static_cast<SwFlyFrame*>(pAnchoredObj));
@@ -360,8 +360,7 @@ void SwFrame::DestroyImpl()
                 }
             }
         }
-        delete mpDrawObjs;
-        mpDrawObjs = nullptr;
+        m_pDrawObjs.reset();
     }
 }
 
@@ -371,7 +370,7 @@ SwFrame::~SwFrame()
     assert(!IsDeleteForbidden()); // check that it's not deleted while deletes are forbidden
 #if OSL_DEBUG_LEVEL > 0
     // JP 15.10.2001: for detection of access to deleted frames
-    mpDrawObjs = reinterpret_cast<SwSortedObjs*>(0x33333333);
+    mpRoot = reinterpret_cast<SwRootFrame*>(0x33333333);
 #endif
 }
 
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index be7264c424e0..5b85b69a4b27 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -297,7 +297,6 @@ SwFrame::SwFrame( SwModify *pMod, SwFrame* pSib )
     mpUpper(nullptr),
     mpNext(nullptr),
     mpPrev(nullptr),
-    mpDrawObjs(nullptr),
     mnFrameType(SwFrameType::None),
     mbInDtor(false),
     mbInvalidR2L(true),


More information about the Libreoffice-commits mailing list