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

Noel Grandin noel at peralex.com
Wed Jun 8 06:39:35 UTC 2016


 reportdesign/source/ui/inc/ReportController.hxx              |    6 -
 reportdesign/source/ui/report/ReportController.cxx           |   18 ++---
 sc/inc/dptabsrc.hxx                                          |    2 
 sc/inc/fmtuno.hxx                                            |    2 
 sc/inc/notesuno.hxx                                          |    3 
 sc/source/core/data/dptabsrc.cxx                             |   17 +---
 sc/source/filter/xml/XMLTrackedChangesContext.cxx            |   20 ++---
 sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx |   38 +++--------
 sc/source/ui/inc/AccessibleDocumentPagePreview.hxx           |    4 -
 sc/source/ui/unoobj/fmtuno.cxx                               |   33 +++------
 sc/source/ui/unoobj/notesuno.cxx                             |   11 ---
 11 files changed, 55 insertions(+), 99 deletions(-)

New commits:
commit 5dd00fedb49f86564f93f07f89faabcb6fad87f6
Author: Noel Grandin <noel at peralex.com>
Date:   Tue Jun 7 11:20:50 2016 +0200

    remove some manual refcounting in reportdesign
    
    Change-Id: I660b94acaf07f7ff79b787a6e7bbbcbdbeae0ac0
    Reviewed-on: https://gerrit.libreoffice.org/26009
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/reportdesign/source/ui/inc/ReportController.hxx b/reportdesign/source/ui/inc/ReportController.hxx
index fc8dcd9..4082efb9 100644
--- a/reportdesign/source/ui/inc/ReportController.hxx
+++ b/reportdesign/source/ui/inc/ReportController.hxx
@@ -90,11 +90,11 @@ namespace rptui
         css::uno::Sequence< css::beans::PropertyValue>
                                 m_aCollapsedSections;
         TransferableDataHelper  m_aSystemClipboard;     // content of the clipboard
-        TransferableClipboardListener*
-                                m_pClipbordNotifier;    /// notifier for changes in the clipboard
+        rtl::Reference<TransferableClipboardListener>
+                                m_pClipboardNotifier;    /// notifier for changes in the clipboard
         VclPtr<OGroupsSortingDialog>   m_pGroupsFloater;
 
-        OXReportControllerObserver* m_pReportControllerObserver;
+        rtl::Reference<OXReportControllerObserver> m_pReportControllerObserver;
 
         ODesignView*  getDesignView() const   { return static_cast< ODesignView* >( getView() ); }
 
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index ef85318..63bd2b5 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -276,7 +276,6 @@ OReportController::OReportController(Reference< XComponentContext > const & xCon
     :OReportController_BASE(xContext)
     ,OPropertyStateContainer(OGenericUnoController_Base::rBHelper)
     ,m_aSelectionListeners( getMutex() )
-    ,m_pClipbordNotifier(nullptr)
     ,m_pGroupsFloater(nullptr)
     ,m_sMode("normal")
     ,m_nSplitPos(-1)
@@ -297,7 +296,6 @@ OReportController::OReportController(Reference< XComponentContext > const & xCon
 {
     // new Observer
     m_pReportControllerObserver = new OXReportControllerObserver(*this);
-    m_pReportControllerObserver->acquire();
     registerProperty("ZoomValue", PROPERTY_ID_ZOOMVALUE,
                      beans::PropertyAttribute::BOUND | beans::PropertyAttribute::TRANSIENT,
                      &m_nZoomValue, ::cppu::UnoType<sal_Int16>::get());
@@ -314,12 +312,11 @@ IMPLEMENT_FORWARD_XINTERFACE2(OReportController,OReportController_BASE,OReportCo
 void OReportController::disposing()
 {
 
-    if ( m_pClipbordNotifier )
+    if ( m_pClipboardNotifier.is() )
     {
-        m_pClipbordNotifier->ClearCallbackLink();
-        m_pClipbordNotifier->AddRemoveListener( getView(), false );
-        m_pClipbordNotifier->release();
-        m_pClipbordNotifier = nullptr;
+        m_pClipboardNotifier->ClearCallbackLink();
+        m_pClipboardNotifier->AddRemoveListener( getView(), false );
+        m_pClipboardNotifier.clear();
     }
     if ( m_pGroupsFloater )
     {
@@ -356,7 +353,7 @@ void OReportController::disposing()
             if ( m_aReportModel )
                 listen(false);
             m_pReportControllerObserver->Clear();
-            m_pReportControllerObserver->release();
+            m_pReportControllerObserver.clear();
         }
         catch(const uno::Exception&)
         {
@@ -1768,9 +1765,8 @@ bool OReportController::Construct(vcl::Window* pParent)
     // now that we have a view we can create the clipboard listener
     m_aSystemClipboard = TransferableDataHelper::CreateFromSystemClipboard( getView() );
     m_aSystemClipboard.StartClipboardListening( );
-    m_pClipbordNotifier = new TransferableClipboardListener( LINK( this, OReportController, OnClipboardChanged ) );
-    m_pClipbordNotifier->acquire();
-    m_pClipbordNotifier->AddRemoveListener( getView(), true );
+    m_pClipboardNotifier = new TransferableClipboardListener( LINK( this, OReportController, OnClipboardChanged ) );
+    m_pClipboardNotifier->AddRemoveListener( getView(), true );
 
     OReportController_BASE::Construct(pParent);
     return true;
commit e626ebf50884520b38137a52a6ffc654c377956d
Author: Noel Grandin <noel at peralex.com>
Date:   Tue Jun 7 09:03:53 2016 +0200

    remove some manual refcounting in sc
    
    Change-Id: Ie13b28ffaf861dc85063e5a4b23fef8c929033d9
    Reviewed-on: https://gerrit.libreoffice.org/26006
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noelgrandin at gmail.com>

diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx
index 03039df..cbbd28f 100644
--- a/sc/inc/dptabsrc.hxx
+++ b/sc/inc/dptabsrc.hxx
@@ -88,7 +88,7 @@ class ScDPSource : public cppu::WeakImplHelper<
 {
 private:
     ScDPTableData*          pData;              // data source (ScDPObject manages its life time)
-    ScDPDimensions*         pDimensions;        // api objects
+    rtl::Reference<ScDPDimensions> pDimensions; // api objects
                                                 // settings:
 
     std::vector<long> maColDims;
diff --git a/sc/inc/fmtuno.hxx b/sc/inc/fmtuno.hxx
index 76209ad..774d94a 100644
--- a/sc/inc/fmtuno.hxx
+++ b/sc/inc/fmtuno.hxx
@@ -74,7 +74,7 @@ class ScTableConditionalFormat : public cppu::WeakImplHelper<
                             css::lang::XServiceInfo >
 {
 private:
-    std::vector<ScTableConditionalEntry*>   aEntries;
+    std::vector<rtl::Reference<ScTableConditionalEntry>>   maEntries;
 
     ScTableConditionalEntry*    GetObjectByIndex_Impl(sal_uInt16 nIndex) const;
     void                        AddEntry_Impl(const ScCondFormatEntryItem& aEntry);
diff --git a/sc/inc/notesuno.hxx b/sc/inc/notesuno.hxx
index ca9a3f4..5b41cb2 100644
--- a/sc/inc/notesuno.hxx
+++ b/sc/inc/notesuno.hxx
@@ -27,6 +27,7 @@
 #include <com/sun/star/text/XSimpleText.hpp>
 #include <cppuhelper/implbase.hxx>
 #include <svl/lstner.hxx>
+#include <rtl/ref.hxx>
 #include "address.hxx"
 
 class ScDocShell;
@@ -118,7 +119,7 @@ private:
 private:
     ScDocShell*             pDocShell;
     ScAddress               aCellPos;
-    SvxUnoText*             pUnoText;
+    rtl::Reference<SvxUnoText> pUnoText;
 };
 
 #endif
diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx
index c92c4e2..b572614 100644
--- a/sc/source/core/data/dptabsrc.cxx
+++ b/sc/source/core/data/dptabsrc.cxx
@@ -92,7 +92,6 @@ static bool lcl_GetBoolFromAny( const uno::Any& aAny )
 
 ScDPSource::ScDPSource( ScDPTableData* pD ) :
     pData( pD ),
-    pDimensions( nullptr ),
     bColumnGrand( true ),       // default is true
     bRowGrand( true ),
     bIgnoreEmptyRows( false ),
@@ -111,9 +110,6 @@ ScDPSource::ScDPSource( ScDPTableData* pD ) :
 
 ScDPSource::~ScDPSource()
 {
-    if (pDimensions)
-        pDimensions->release();     // ref-counted
-
     // free lists
 
     delete[] pColResults;
@@ -299,12 +295,11 @@ bool ScDPSource::IsDateDimension(long nDim)
 
 ScDPDimensions* ScDPSource::GetDimensionsObject()
 {
-    if (!pDimensions)
+    if (!pDimensions.is())
     {
         pDimensions = new ScDPDimensions(this);
-        pDimensions->acquire();                     // ref-counted
     }
-    return pDimensions;
+    return pDimensions.get();
 }
 
 uno::Reference<container::XNameAccess> SAL_CALL ScDPSource::getDimensions() throw(uno::RuntimeException, std::exception)
@@ -319,7 +314,7 @@ void ScDPSource::SetDupCount( long nNew )
 
 ScDPDimension* ScDPSource::AddDuplicated(long /* nSource */, const OUString& rNewName)
 {
-    OSL_ENSURE( pDimensions, "AddDuplicated without dimensions?" );
+    OSL_ENSURE( pDimensions.is(), "AddDuplicated without dimensions?" );
 
     //  re-use
 
@@ -539,11 +534,7 @@ void ScDPSource::disposeData()
         aRowLevelList.clear();
     }
 
-    if ( pDimensions )
-    {
-        pDimensions->release(); // ref-counted
-        pDimensions = nullptr;     //  settings have to be applied (from SaveData) again!
-    }
+    pDimensions.clear(); // settings have to be applied (from SaveData) again!
     SetDupCount( 0 );
 
     maColDims.clear();
diff --git a/sc/source/filter/xml/XMLTrackedChangesContext.cxx b/sc/source/filter/xml/XMLTrackedChangesContext.cxx
index ac36be3..6c56b0f 100644
--- a/sc/source/filter/xml/XMLTrackedChangesContext.cxx
+++ b/sc/source/filter/xml/XMLTrackedChangesContext.cxx
@@ -228,7 +228,7 @@ class ScXMLChangeCellContext : public SvXMLImportContext
 
     OUString           sText;
     OUString&          rInputString;
-    ScEditEngineTextObj*    pEditTextObj;
+    rtl::Reference<ScEditEngineTextObj> mpEditTextObj;
     double&                 rDateTimeValue;
     double                  fValue;
     sal_uInt16&             rType;
@@ -254,7 +254,7 @@ public:
                                                     const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
 
     void CreateTextPContext(bool bIsNewParagraph);
-    bool IsEditCell() { return pEditTextObj != nullptr; }
+    bool IsEditCell() { return mpEditTextObj.is(); }
     void SetText(const OUString& sTempText) { sText = sTempText; }
 
     virtual void EndElement() override;
@@ -1012,7 +1012,6 @@ ScXMLChangeCellContext::ScXMLChangeCellContext( ScXMLImport& rImport,
     : SvXMLImportContext( rImport, nPrfx, rLName )
     , mrOldCell(rOldCell)
     , rInputString(rTempInputString)
-    , pEditTextObj(nullptr)
     , rDateTimeValue(fDateTimeValue)
     , fValue(0.0)
     , rType(nType)
@@ -1122,7 +1121,7 @@ SvXMLImportContext *ScXMLChangeCellContext::CreateChildContext( sal_uInt16 nPref
         }
         else
         {
-            if (!pEditTextObj)
+            if (!mpEditTextObj.is())
                 CreateTextPContext(true);
             pContext = GetScImport().GetTextImport()->CreateTextChildContext(
                 GetScImport(), nPrefix, rLocalName, xAttrList);
@@ -1139,10 +1138,9 @@ void ScXMLChangeCellContext::CreateTextPContext(bool bIsNewParagraph)
 {
     if (GetScImport().GetDocument())
     {
-        pEditTextObj = new ScEditEngineTextObj();
-        pEditTextObj->acquire();
-        pEditTextObj->GetEditEngine()->SetEditTextObjectPool(GetScImport().GetDocument()->GetEditPool());
-        uno::Reference <text::XText> xText(pEditTextObj);
+        mpEditTextObj = new ScEditEngineTextObj();
+        mpEditTextObj->GetEditEngine()->SetEditTextObjectPool(GetScImport().GetDocument()->GetEditPool());
+        uno::Reference <text::XText> xText(mpEditTextObj.get());
         if (xText.is())
         {
             uno::Reference<text::XTextCursor> xTextCursor(xText->createTextCursor());
@@ -1164,7 +1162,7 @@ void ScXMLChangeCellContext::EndElement()
     if (!bEmpty)
     {
         ScDocument* pDoc = GetScImport().GetDocument();
-        if (pEditTextObj)
+        if (mpEditTextObj.is())
         {
             if (GetImport().GetTextImport()->GetCursor().is())
             {
@@ -1179,9 +1177,9 @@ void ScXMLChangeCellContext::EndElement()
 
             // The cell will own the text object instance.
             mrOldCell.meType = CELLTYPE_EDIT;
-            mrOldCell.mpEditText = pEditTextObj->CreateTextObject();
+            mrOldCell.mpEditText = mpEditTextObj->CreateTextObject();
             GetScImport().GetTextImport()->ResetCursor();
-            pEditTextObj->release();
+            mpEditTextObj.clear();
         }
         else
         {
diff --git a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
index 9979338..4e6aa39 100644
--- a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
@@ -1186,9 +1186,7 @@ ScAccessibleDocumentPagePreview::ScAccessibleDocumentPagePreview(
     ScAccessibleDocumentBase(rxParent),
     mpViewShell(pViewShell),
     mpNotesChildren(nullptr),
-    mpShapeChildren(nullptr),
-    mpHeader(nullptr),
-    mpFooter(nullptr)
+    mpShapeChildren(nullptr)
 {
     if (pViewShell)
         pViewShell->AddAccessibilityObject(*this);
@@ -1210,16 +1208,8 @@ void SAL_CALL ScAccessibleDocumentPagePreview::disposing()
 {
     SolarMutexGuard aGuard;
     mpTable.clear();
-    if (mpHeader)
-    {
-        mpHeader->release();
-        mpHeader = nullptr;
-    }
-    if (mpFooter)
-    {
-        mpFooter->release();
-        mpFooter = nullptr;
-    }
+    mpHeader.clear();
+    mpFooter.clear();
 
     if (mpViewShell)
     {
@@ -1361,29 +1351,27 @@ uno::Reference< XAccessible > SAL_CALL ScAccessibleDocumentPagePreview::getAcces
                 xAccessible = GetNotesChildren()->GetAt(rPoint);
             if (!xAccessible.is())
             {
-                if (!mpHeader || !mpFooter)
+                if (!mpHeader.is() || !mpFooter.is())
                 {
                     const ScPreviewLocationData& rData = mpViewShell->GetLocationData();
                     ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChildren(), GetShapeChildren() );
 
-                    if (!mpHeader)
+                    if (!mpHeader.is())
                     {
                         mpHeader = new ScAccessiblePageHeader( this, mpViewShell, true, aCount.nBackShapes + aCount.nHeaders - 1);
-                        mpHeader->acquire();
                     }
-                    if (!mpFooter)
+                    if (!mpFooter.is())
                     {
                         mpFooter = new ScAccessiblePageHeader( this, mpViewShell, false, aCount.nBackShapes + aCount.nHeaders + aCount.nTables + aCount.nNoteParagraphs + aCount.nFooters - 1 );
-                        mpFooter->acquire();
                     }
                 }
 
                 Point aPoint(VCLPoint(rPoint));
 
                 if (VCLRectangle(mpHeader->getBounds()).IsInside(aPoint))
-                    xAccessible = mpHeader;
+                    xAccessible = mpHeader.get();
                 else if (VCLRectangle(mpFooter->getBounds()).IsInside(aPoint))
-                    xAccessible = mpFooter;
+                    xAccessible = mpFooter.get();
             }
             if (!xAccessible.is())
                 xAccessible = GetShapeChildren()->GetBackgroundShapeAt(rPoint);
@@ -1444,13 +1432,12 @@ uno::Reference<XAccessible> SAL_CALL ScAccessibleDocumentPagePreview::getAccessi
         }
         else if ( nIndex < aCount.nBackShapes + aCount.nHeaders )
         {
-            if ( !mpHeader )
+            if ( !mpHeader.is() )
             {
                 mpHeader = new ScAccessiblePageHeader( this, mpViewShell, true, nIndex );
-                mpHeader->acquire();
             }
 
-            xAccessible = mpHeader;
+            xAccessible = mpHeader.get();
         }
         else if ( nIndex < aCount.nBackShapes + aCount.nHeaders + aCount.nTables )
         {
@@ -1467,12 +1454,11 @@ uno::Reference<XAccessible> SAL_CALL ScAccessibleDocumentPagePreview::getAccessi
         }
         else if ( (nIndex < aCount.nBackShapes + aCount.nHeaders + aCount.nTables + aCount.nNoteParagraphs + aCount.nFooters) )
         {
-            if ( !mpFooter )
+            if ( !mpFooter.is() )
             {
                 mpFooter = new ScAccessiblePageHeader( this, mpViewShell, false, nIndex );
-                mpFooter->acquire();
             }
-            xAccessible = mpFooter;
+            xAccessible = mpFooter.get();
         }
         else
         {
diff --git a/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx b/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx
index d72a417..26c6d9d 100644
--- a/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx
+++ b/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx
@@ -135,8 +135,8 @@ private:
     ScNotesChildren* mpNotesChildren;
     ScShapeChildren* mpShapeChildren;
     rtl::Reference<ScAccessiblePreviewTable> mpTable;
-    ScAccessiblePageHeader* mpHeader;
-    ScAccessiblePageHeader* mpFooter;
+    rtl::Reference<ScAccessiblePageHeader> mpHeader;
+    rtl::Reference<ScAccessiblePageHeader> mpFooter;
 
     bool IsDefunc(
         const css::uno::Reference<css::accessibility::XAccessibleStateSet>& rxParentStates);
diff --git a/sc/source/ui/unoobj/fmtuno.cxx b/sc/source/ui/unoobj/fmtuno.cxx
index e4692ae..417c97b 100644
--- a/sc/source/ui/unoobj/fmtuno.cxx
+++ b/sc/source/ui/unoobj/fmtuno.cxx
@@ -195,11 +195,10 @@ void ScTableConditionalFormat::FillFormat( ScConditionalFormat& rFormat,
 
     OSL_ENSURE( rFormat.IsEmpty(), "FillFormat: Format nicht leer" );
 
-    std::vector<ScTableConditionalEntry*>::const_iterator iter;
-    for (iter = aEntries.begin(); iter != aEntries.end(); ++iter)
+    for (const auto & i : maEntries)
     {
         ScCondFormatEntryItem aData;
-        (*iter)->GetData(aData);
+        i->GetData(aData);
 
         FormulaGrammar::Grammar eGrammar1 = lclResolveGrammar( eGrammar, aData.meGrammar1 );
         FormulaGrammar::Grammar eGrammar2 = lclResolveGrammar( eGrammar, aData.meGrammar2 );
@@ -229,23 +228,19 @@ void ScTableConditionalFormat::FillFormat( ScConditionalFormat& rFormat,
 
 ScTableConditionalFormat::~ScTableConditionalFormat()
 {
-    std::for_each(aEntries.begin(), aEntries.end(),
-        [] (ScTableConditionalEntry *const pEntry) { pEntry->release(); } );
-
 }
 
 void ScTableConditionalFormat::AddEntry_Impl(const ScCondFormatEntryItem& aEntry)
 {
     ScTableConditionalEntry* pNew = new ScTableConditionalEntry(aEntry);
-    pNew->acquire();
-    aEntries.push_back(pNew);
+    maEntries.push_back(pNew);
 }
 
 // XSheetConditionalFormat
 
 ScTableConditionalEntry* ScTableConditionalFormat::GetObjectByIndex_Impl(sal_uInt16 nIndex) const
 {
-    return nIndex < aEntries.size() ? aEntries[nIndex] : nullptr;
+    return nIndex < maEntries.size() ? maEntries[nIndex].get() : nullptr;
 }
 
 void SAL_CALL ScTableConditionalFormat::addNew(
@@ -349,22 +344,16 @@ void SAL_CALL ScTableConditionalFormat::removeByIndex( sal_Int32 nIndex )
 {
     SolarMutexGuard aGuard;
 
-    if (nIndex < static_cast<sal_Int32>(aEntries.size()) && nIndex >= 0)
+    if (nIndex < static_cast<sal_Int32>(maEntries.size()) && nIndex >= 0)
     {
-        std::vector<ScTableConditionalEntry*>::iterator iter = aEntries.begin()+nIndex;
-
-        (*iter)->release();
-        aEntries.erase(iter);
+        maEntries.erase(maEntries.begin()+nIndex);
     }
 }
 
 void SAL_CALL ScTableConditionalFormat::clear() throw(uno::RuntimeException, std::exception)
 {
     SolarMutexGuard aGuard;
-    std::for_each(aEntries.begin(),aEntries.end(),
-        [] (ScTableConditionalEntry *const pEntry) { pEntry->release(); } );
-
-    aEntries.clear();
+    maEntries.clear();
 }
 
 // XEnumerationAccess
@@ -381,7 +370,7 @@ uno::Reference<container::XEnumeration> SAL_CALL ScTableConditionalFormat::creat
 sal_Int32 SAL_CALL ScTableConditionalFormat::getCount() throw(uno::RuntimeException, std::exception)
 {
     SolarMutexGuard aGuard;
-    return aEntries.size();
+    return maEntries.size();
 }
 
 uno::Any SAL_CALL ScTableConditionalFormat::getByIndex( sal_Int32 nIndex )
@@ -425,7 +414,7 @@ uno::Any SAL_CALL ScTableConditionalFormat::getByName( const OUString& aName )
     SolarMutexGuard aGuard;
 
     uno::Reference<sheet::XSheetConditionalEntry> xEntry;
-    long nCount = aEntries.size();
+    long nCount = maEntries.size();
     for (long i=0; i<nCount; i++)
         if ( aName == lcl_GetEntryNameFromIndex(i) )
         {
@@ -444,7 +433,7 @@ uno::Sequence<OUString> SAL_CALL ScTableConditionalFormat::getElementNames()
 {
     SolarMutexGuard aGuard;
 
-    long nCount = aEntries.size();
+    long nCount = maEntries.size();
     uno::Sequence<OUString> aNames(nCount);
     OUString* pArray = aNames.getArray();
     for (long i=0; i<nCount; i++)
@@ -458,7 +447,7 @@ sal_Bool SAL_CALL ScTableConditionalFormat::hasByName( const OUString& aName )
 {
     SolarMutexGuard aGuard;
 
-    long nCount = aEntries.size();
+    long nCount = maEntries.size();
     for (long i=0; i<nCount; i++)
         if ( aName == lcl_GetEntryNameFromIndex(i) )
             return true;
diff --git a/sc/source/ui/unoobj/notesuno.cxx b/sc/source/ui/unoobj/notesuno.cxx
index ad2f399..b6b5c5f 100644
--- a/sc/source/ui/unoobj/notesuno.cxx
+++ b/sc/source/ui/unoobj/notesuno.cxx
@@ -57,8 +57,7 @@ SC_SIMPLE_SERVICE_INFO( ScAnnotationObj, "ScAnnotationObj", "com.sun.star.sheet.
 
 ScAnnotationObj::ScAnnotationObj(ScDocShell* pDocSh, const ScAddress& rPos) :
     pDocShell( pDocSh ),
-    aCellPos( rPos ),
-    pUnoText( nullptr )
+    aCellPos( rPos )
 {
     pDocShell->GetDocument().AddUnoObject(*this);
 
@@ -72,9 +71,6 @@ ScAnnotationObj::~ScAnnotationObj()
 
     if (pDocShell)
         pDocShell->GetDocument().RemoveUnoObject(*this);
-
-    if (pUnoText)
-        pUnoText->release();
 }
 
 void ScAnnotationObj::Notify( SfxBroadcaster&, const SfxHint& rHint )
@@ -237,14 +233,13 @@ uno::Reference < drawing::XShape > SAL_CALL ScAnnotationObj::getAnnotationShape(
 
 SvxUnoText& ScAnnotationObj::GetUnoText()
 {
-    if (!pUnoText)
+    if (!pUnoText.is())
     {
         ScAnnotationEditSource aEditSource( pDocShell, aCellPos );
         pUnoText = new SvxUnoText( &aEditSource, lcl_GetAnnotationPropertySet(),
                                     uno::Reference<text::XText>() );
-        pUnoText->acquire();
     }
-    return *pUnoText;
+    return *pUnoText.get();
 }
 
 const ScPostIt* ScAnnotationObj::ImplGetNote() const


More information about the Libreoffice-commits mailing list