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

Noel Grandin noel.grandin at collabora.co.uk
Thu Apr 26 06:47:42 UTC 2018


 vcl/inc/PhysicalFontCollection.hxx         |    3 ++-
 vcl/source/font/PhysicalFontCollection.cxx |   13 ++++++-------
 2 files changed, 8 insertions(+), 8 deletions(-)

New commits:
commit 96c1aad92b40a14d0d4af662e276b6967560ec20
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Apr 23 14:32:12 2018 +0200

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

diff --git a/vcl/inc/PhysicalFontCollection.hxx b/vcl/inc/PhysicalFontCollection.hxx
index 1d5dbb908039..fd944a211631 100644
--- a/vcl/inc/PhysicalFontCollection.hxx
+++ b/vcl/inc/PhysicalFontCollection.hxx
@@ -24,6 +24,7 @@
 
 #include "fontinstance.hxx"
 #include "PhysicalFontFamily.hxx"
+#include <array>
 
 #define MAX_GLYPHFALLBACK 16
 
@@ -75,7 +76,7 @@ private:
     ImplPreMatchFontSubstitution* mpPreMatchHook;       // device specific prematch substitution
     ImplGlyphFallbackFontSubstitution* mpFallbackHook;  // device specific glyph fallback substitution
 
-    mutable PhysicalFontFamily**  mpFallbackList;
+    mutable std::unique_ptr<std::array<PhysicalFontFamily*,MAX_GLYPHFALLBACK>>  mpFallbackList;
     mutable int             mnFallbackCount;
 
     void                    ImplInitMatchData() const;
diff --git a/vcl/source/font/PhysicalFontCollection.cxx b/vcl/source/font/PhysicalFontCollection.cxx
index 848fbdf06122..fcdef005dfdd 100644
--- a/vcl/source/font/PhysicalFontCollection.cxx
+++ b/vcl/source/font/PhysicalFontCollection.cxx
@@ -85,8 +85,7 @@ void PhysicalFontCollection::SetFallbackHook( ImplGlyphFallbackFontSubstitution*
 void PhysicalFontCollection::Clear()
 {
     // remove fallback lists
-    delete[] mpFallbackList;
-    mpFallbackList = nullptr;
+    mpFallbackList.reset();
     mnFallbackCount = -1;
 
     // clear all entries in the device font list
@@ -134,7 +133,7 @@ void PhysicalFontCollection::ImplInitGenericGlyphFallback() const
     bool bHasEudc = false;
     int nMaxLevel = 0;
     int nBestQuality = 0;
-    PhysicalFontFamily** pFallbackList = nullptr;
+    std::unique_ptr<std::array<PhysicalFontFamily*,MAX_GLYPHFALLBACK>> pFallbackList;
 
     for( const char** ppNames = &aGlyphFallbackList[0];; ++ppNames )
     {
@@ -165,16 +164,16 @@ void PhysicalFontCollection::ImplInitGenericGlyphFallback() const
             nBestQuality = pFallbackFont->GetMinQuality();
             // store available glyph fallback fonts
             if( !pFallbackList )
-                pFallbackList = new PhysicalFontFamily*[ MAX_GLYPHFALLBACK ];
+                pFallbackList.reset(new std::array<PhysicalFontFamily*,MAX_GLYPHFALLBACK>);
 
-            pFallbackList[ nMaxLevel ] = pFallbackFont;
+            (*pFallbackList)[ nMaxLevel ] = pFallbackFont;
             if( !bHasEudc && !nMaxLevel )
                 bHasEudc = !strncmp( *ppNames, "eudc", 5 );
         }
     }
 
     mnFallbackCount = nMaxLevel;
-    mpFallbackList  = pFallbackList;
+    mpFallbackList  = std::move(pFallbackList);
 }
 
 PhysicalFontFamily* PhysicalFontCollection::GetGlyphFallbackFont( FontSelectPattern& rFontSelData,
@@ -272,7 +271,7 @@ PhysicalFontFamily* PhysicalFontCollection::GetGlyphFallbackFont( FontSelectPatt
 
         // TODO: adjust nFallbackLevel by number of levels resolved by the fallback hook
         if( nFallbackLevel < mnFallbackCount )
-            pFallbackData = mpFallbackList[ nFallbackLevel ];
+            pFallbackData = (*mpFallbackList)[ nFallbackLevel ];
     }
 
     return pFallbackData;


More information about the Libreoffice-commits mailing list