framework/inc/classes/protocolhandlercache.hxx        |    7 +++--
 framework/source/fwi/classes/protocolhandlercache.cxx |   24 +++++++++---------
 2 files changed, 16 insertions(+), 15 deletions(-)

New commits:
commit d1dfb7d56137ea62d6f3cdfb07f3ee841eb28f9e
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Mon May 31 11:11:30 2021 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon May 31 21:36:25 2021 +0200

    no need to allocate these separately
    
    Change-Id: I9464fbcc1af966755cc4eb8fe0beead4638848ba
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116479
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/framework/inc/classes/protocolhandlercache.hxx 
b/framework/inc/classes/protocolhandlercache.hxx
index 78a3449f8aa9..d29ba6795248 100644
--- a/framework/inc/classes/protocolhandlercache.hxx
+++ b/framework/inc/classes/protocolhandlercache.hxx
@@ -20,6 +20,7 @@
 #pragma once
 
 #include <unordered_map>
+#include <optional>
 
 #include <com/sun/star/util/URL.hpp>
 
@@ -90,9 +91,9 @@ class HandlerCache final
     private:
 
         /// list of all registered handler registered by her uno 
implementation names
-        static std::unique_ptr<HandlerHash> s_pHandler;
+        static std::optional<HandlerHash> s_pHandler;
         /// maps URL pattern to handler names
-        static std::unique_ptr<PatternHash> s_pPattern;
+        static std::optional<PatternHash> s_pPattern;
         /// informs about config updates
         static HandlerCFGAccess* s_pConfig;
         /// ref count to construct/destruct internal member lists on demand by 
using singleton mechanism
@@ -107,7 +108,7 @@ class HandlerCache final
         bool search( const OUString& sURL, ProtocolHandler* pReturn ) const;
         bool search( const css::util::URL&  aURL, ProtocolHandler* pReturn ) 
const;
 
-        void takeOver(std::unique_ptr<HandlerHash> pHandler, 
std::unique_ptr<PatternHash> pPattern);
+        void takeOver(HandlerHash aHandler, PatternHash aPattern);
 };
 
 /**
diff --git a/framework/source/fwi/classes/protocolhandlercache.cxx 
b/framework/source/fwi/classes/protocolhandlercache.cxx
index 9288536480d9..1879554c7bed 100644
--- a/framework/source/fwi/classes/protocolhandlercache.cxx
+++ b/framework/source/fwi/classes/protocolhandlercache.cxx
@@ -68,8 +68,8 @@ PatternHash::const_iterator findPatternKey(PatternHash const 
* hash, const OUStr
                 That means it use two static member list to hold all necessary 
information
                 and a ref count mechanism to create/destroy it on demand.
  */
-std::unique_ptr<HandlerHash> HandlerCache::s_pHandler;
-std::unique_ptr<PatternHash> HandlerCache::s_pPattern;
+std::optional<HandlerHash> HandlerCache::s_pHandler;
+std::optional<PatternHash> HandlerCache::s_pPattern;
 sal_Int32    HandlerCache::m_nRefCount = 0;
 HandlerCFGAccess* HandlerCache::s_pConfig = nullptr;
 
@@ -86,8 +86,8 @@ HandlerCache::HandlerCache()
 
     if (m_nRefCount==0)
     {
-        s_pHandler.reset(new HandlerHash);
-        s_pPattern.reset(new PatternHash);
+        s_pHandler.emplace();
+        s_pPattern.emplace();
         s_pConfig = new HandlerCFGAccess(PACKAGENAME_PROTOCOLHANDLER);
         s_pConfig->read(*s_pHandler, *s_pPattern);
         s_pConfig->setCache(this);
@@ -129,7 +129,7 @@ bool HandlerCache::search( const OUString& sURL, 
ProtocolHandler* pReturn ) cons
 
     SolarMutexGuard aGuard;
 
-    PatternHash::const_iterator pItem = findPatternKey(s_pPattern.get(), sURL);
+    PatternHash::const_iterator pItem = findPatternKey(s_pPattern ? 
&*s_pPattern : nullptr, sURL);
     if (pItem != s_pPattern->end())
     {
         *pReturn = (*s_pHandler)[pItem->second];
@@ -150,12 +150,12 @@ bool HandlerCache::search( const css::util::URL& aURL, 
ProtocolHandler* pReturn
     return search( aURL.Complete, pReturn );
 }
 
-void HandlerCache::takeOver(std::unique_ptr<HandlerHash> pHandler, 
std::unique_ptr<PatternHash> pPattern)
+void HandlerCache::takeOver(HandlerHash aHandler, PatternHash aPattern)
 {
     SolarMutexGuard aGuard;
 
-    s_pHandler = std::move(pHandler);
-    s_pPattern = std::move(pPattern);
+    s_pHandler = std::move(aHandler);
+    s_pPattern = std::move(aPattern);
 }
 
 /**
@@ -240,12 +240,12 @@ void HandlerCFGAccess::read( HandlerHash& rHandlerHash, 
PatternHash& rPatternHas
 
 void HandlerCFGAccess::Notify(const css::uno::Sequence< OUString >& 
/*lPropertyNames*/)
 {
-    std::unique_ptr<HandlerHash> pHandler(new HandlerHash);
-    std::unique_ptr<PatternHash> pPattern(new PatternHash);
+    HandlerHash aHandler;
+    PatternHash aPattern;
 
-    read(*pHandler, *pPattern);
+    read(aHandler, aPattern);
     if (m_pCache)
-        m_pCache->takeOver(std::move(pHandler), std::move(pPattern));
+        m_pCache->takeOver(std::move(aHandler), std::move(aPattern));
 }
 
 void HandlerCFGAccess::ImplCommit()
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to