sc/inc/sheetevents.hxx              |    4 +++-
 sc/source/core/data/sheetevents.cxx |   30 +++++++++++-------------------
 sd/source/filter/eppt/epptso.cxx    |    2 +-
 sd/source/filter/eppt/pptx-text.cxx |   22 +++++++++-------------
 sd/source/filter/eppt/text.hxx      |    4 ++--
 5 files changed, 26 insertions(+), 36 deletions(-)

New commits:
commit 20dfe973a8c1ef0d873aca735711e288734c5cba
Author: Noel Grandin <noel.gran...@collabora.co.uk>
Date:   Mon Jun 25 17:08:28 2018 +0200

    loplugin:useuniqueptr in PortionObj
    
    Change-Id: I79fcbaa12def04aa36bdf1928638b70ad490448c
    Reviewed-on: https://gerrit.libreoffice.org/56494
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx
index 4ebeafe3c48e..69d520e7b742 100644
--- a/sd/source/filter/eppt/epptso.cxx
+++ b/sd/source/filter/eppt/epptso.cxx
@@ -1108,7 +1108,7 @@ void PPTWriter::ImplWriteTextStyleAtom( SvStream& rOut, 
int nTextInstance, sal_u
                 const PortionObj& rPortion = *(*it).get();
                 if ( rPortion.mpFieldEntry )
                 {
-                    const FieldEntry* pFieldEntry = rPortion.mpFieldEntry;
+                    const FieldEntry* pFieldEntry = 
rPortion.mpFieldEntry.get();
 
                     switch ( pFieldEntry->nFieldType >> 28 )
                     {
diff --git a/sd/source/filter/eppt/pptx-text.cxx 
b/sd/source/filter/eppt/pptx-text.cxx
index 90011a09be3d..00e8c483c327 100644
--- a/sd/source/filter/eppt/pptx-text.cxx
+++ b/sd/source/filter/eppt/pptx-text.cxx
@@ -120,7 +120,7 @@ PortionObj::PortionObj(css::uno::Reference< 
css::text::XTextRange > & rXTextRang
             nFieldType = ImplGetTextField( rXTextRange, mXPropSet, aURL );
         if ( nFieldType )
         {
-            mpFieldEntry = new FieldEntry( nFieldType, 0, mnTextSize );
+            mpFieldEntry.reset( new FieldEntry( nFieldType, 0, mnTextSize ) );
             if ( nFieldType >> 28 == 4 )
             {
                 mpFieldEntry->aRepresentation = aString;
@@ -141,7 +141,7 @@ PortionObj::PortionObj(css::uno::Reference< 
css::text::XTextRange > & rXTextRang
             mnTextSize = 1;
             if ( bLast )
                 mnTextSize++;
-            mpText = new sal_uInt16[ mnTextSize ];
+            mpText.reset( new sal_uInt16[ mnTextSize ] );
             mpText[ 0 ] = 0x2a;
         }
         else
@@ -155,7 +155,7 @@ PortionObj::PortionObj(css::uno::Reference< 
css::text::XTextRange > & rXTextRang
                 mnTextSize++;
                 bRTL_endingParen = true;
             }
-            mpText = new sal_uInt16[ mnTextSize ];
+            mpText.reset( new sal_uInt16[ mnTextSize ] );
             sal_uInt16 nChar;
             for ( sal_Int32 i = 0; i < aString.getLength(); i++ )
             {
@@ -261,7 +261,7 @@ void PortionObj::ImplGetPortionValues( FontCollection& 
rFontCollection, bool bGe
     sal_Int16 nScriptType = SvtLanguageOptions::FromSvtScriptTypeToI18N( 
SvtLanguageOptions::GetScriptTypeOfLanguage( 
Application::GetSettings().GetLanguageTag().getLanguageType() ) );
     if ( mpText && mnTextSize && xPPTBreakIter.is() )
     {
-        OUString sT( reinterpret_cast<sal_Unicode *>(mpText), mnTextSize );
+        OUString sT( reinterpret_cast<sal_Unicode *>(mpText.get()), mnTextSize 
);
         nScriptType = xPPTBreakIter->getScriptType( sT, 0 );
     }
     if ( nScriptType != css::i18n::ScriptType::COMPLEX )
@@ -440,8 +440,8 @@ void PortionObj::ImplGetPortionValues( FontCollection& 
rFontCollection, bool bGe
 
 void PortionObj::ImplClear()
 {
-    delete mpFieldEntry;
-    delete[] mpText;
+    mpFieldEntry.reset();
+    mpText.reset();
 }
 
 void PortionObj::ImplConstruct( const PortionObj& rPortionObj )
@@ -465,16 +465,12 @@ void PortionObj::ImplConstruct( const PortionObj& 
rPortionObj )
 
     if ( rPortionObj.mpText )
     {
-        mpText = new sal_uInt16[ mnTextSize ];
-        memcpy( mpText, rPortionObj.mpText, mnTextSize << 1 );
+        mpText.reset( new sal_uInt16[ mnTextSize ] );
+        memcpy( mpText.get(), rPortionObj.mpText.get(), mnTextSize << 1 );
     }
-    else
-        mpText = nullptr;
 
     if ( rPortionObj.mpFieldEntry )
-        mpFieldEntry = new FieldEntry( *( rPortionObj.mpFieldEntry ) );
-    else
-        mpFieldEntry = nullptr;
+        mpFieldEntry.reset( new FieldEntry( *( rPortionObj.mpFieldEntry ) ) );
 }
 
 sal_uInt32 PortionObj::ImplCalculateTextPositions( sal_uInt32 
nCurrentTextPosition )
diff --git a/sd/source/filter/eppt/text.hxx b/sd/source/filter/eppt/text.hxx
index d9e40f2ac91d..0928e9b72dba 100644
--- a/sd/source/filter/eppt/text.hxx
+++ b/sd/source/filter/eppt/text.hxx
@@ -144,8 +144,8 @@ class PortionObj final : public PropStateValue
         sal_uInt32      mnTextSize;
         bool        mbLastPortion;
 
-        sal_uInt16*     mpText;
-        FieldEntry*     mpFieldEntry;
+        std::unique_ptr<sal_uInt16[]> mpText;
+        std::unique_ptr<FieldEntry> mpFieldEntry;
 
                         PortionObj( css::uno::Reference< css::text::XTextRange 
> & rXTextRangeRef,
                                         bool bLast, FontCollection& 
rFontCollection );
commit 5be0637827cd987b7b7dda7ca2c54a3548d9ef51
Author: Noel Grandin <noel.gran...@collabora.co.uk>
Date:   Mon Jun 25 16:46:32 2018 +0200

    loplugin:useuniqueptr in ScSheetEvents
    
    Change-Id: I7dce11ddf85fc92d6ac69ea307c4c1c181521460
    Reviewed-on: https://gerrit.libreoffice.org/56492
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/inc/sheetevents.hxx b/sc/inc/sheetevents.hxx
index 267e442f25a3..8434cc209e4c 100644
--- a/sc/inc/sheetevents.hxx
+++ b/sc/inc/sheetevents.hxx
@@ -21,6 +21,8 @@
 #define INCLUDED_SC_INC_SHEETEVENTS_HXX
 
 #include <rtl/ustring.hxx>
+#include <memory>
+#include <boost/optional.hpp>
 
 enum class ScSheetEventId {
     FOCUS, UNFOCUS, SELECT, DOUBLECLICK, RIGHTCLICK, CHANGE, CALCULATE, COUNT,
@@ -29,7 +31,7 @@ enum class ScSheetEventId {
 
 class ScSheetEvents
 {
-    OUString** mpScriptNames;
+    std::unique_ptr<boost::optional<OUString>[]> mpScriptNames;
 
     void        Clear();
 
diff --git a/sc/source/core/data/sheetevents.cxx 
b/sc/source/core/data/sheetevents.cxx
index 0cf3be3de55d..b8f0430e2101 100644
--- a/sc/source/core/data/sheetevents.cxx
+++ b/sc/source/core/data/sheetevents.cxx
@@ -73,13 +73,7 @@ ScSheetEvents::~ScSheetEvents()
 
 void ScSheetEvents::Clear()
 {
-    if (mpScriptNames)
-    {
-        for (sal_Int32 nEvent=0; nEvent<COUNT; ++nEvent)
-            delete mpScriptNames[nEvent];
-        delete[] mpScriptNames;
-        mpScriptNames = nullptr;
-    }
+    mpScriptNames.reset();
 }
 
 ScSheetEvents::ScSheetEvents(const ScSheetEvents& rOther) :
@@ -93,12 +87,9 @@ ScSheetEvents& ScSheetEvents::operator=(const ScSheetEvents& 
rOther)
     Clear();
     if (rOther.mpScriptNames)
     {
-        mpScriptNames = new OUString*[COUNT];
+        mpScriptNames.reset( new boost::optional<OUString>[COUNT] );
         for (sal_Int32 nEvent=0; nEvent<COUNT; ++nEvent)
-            if (rOther.mpScriptNames[nEvent])
-                mpScriptNames[nEvent] = new 
OUString(*rOther.mpScriptNames[nEvent]);
-            else
-                mpScriptNames[nEvent] = nullptr;
+            mpScriptNames[nEvent] = *rOther.mpScriptNames[nEvent];
     }
     return *this;
 }
@@ -106,7 +97,11 @@ ScSheetEvents& ScSheetEvents::operator=(const 
ScSheetEvents& rOther)
 const OUString* ScSheetEvents::GetScript(ScSheetEventId nEvent) const
 {
     if (mpScriptNames)
-        return mpScriptNames[static_cast<int>(nEvent)];
+    {
+        boost::optional<OUString> const & r = 
mpScriptNames[static_cast<int>(nEvent)];
+        if (r)
+            return &*r;
+    }
     return nullptr;
 }
 
@@ -115,15 +110,12 @@ void ScSheetEvents::SetScript(ScSheetEventId eEvent, 
const OUString* pNew)
     int nEvent = static_cast<int>(eEvent);
     if (!mpScriptNames)
     {
-        mpScriptNames = new OUString*[COUNT];
-        for (sal_Int32 nEventIdx=0; nEventIdx<COUNT; ++nEventIdx)
-            mpScriptNames[nEventIdx] = nullptr;
+        mpScriptNames.reset( new boost::optional<OUString>[COUNT] );
     }
-    delete mpScriptNames[nEvent];
     if (pNew)
-        mpScriptNames[nEvent] = new OUString(*pNew);
+        mpScriptNames[nEvent] = *pNew;
     else
-        mpScriptNames[nEvent] = nullptr;
+        mpScriptNames[nEvent].reset();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to