writerperfect/Library_wpftwriter.mk        |    1 +
 writerperfect/source/writer/exp/xmlimp.cxx |   21 +++++++++++----------
 2 files changed, 12 insertions(+), 10 deletions(-)

New commits:
commit a2327585289f36b4731ed20e70a406060f8fe23b
Author:     Arnaud VERSINI <[email protected]>
AuthorDate: Mon Apr 21 15:37:45 2025 +0200
Commit:     Arnaud Versini <[email protected]>
CommitDate: Mon Jun 9 14:40:47 2025 +0200

    writeperfect : use more frozen and OUString literal to avoid allocation
    
    Change-Id: I3caebb786e8c09ff9c79cda7fe9aabed2422e79e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184409
    Tested-by: Jenkins
    Reviewed-by: Arnaud Versini <[email protected]>

diff --git a/writerperfect/Library_wpftwriter.mk 
b/writerperfect/Library_wpftwriter.mk
index 840a86f06e22..640af58f4c46 100644
--- a/writerperfect/Library_wpftwriter.mk
+++ b/writerperfect/Library_wpftwriter.mk
@@ -66,6 +66,7 @@ $(eval $(call gb_Library_use_externals,wpftwriter,\
        boost_headers \
        ebook \
     $(if $(ENABLE_WASM_STRIP_SWEXPORTS),,etonyek) \
+       frozen \
        icu_headers \
        icui18n \
        icuuc \
diff --git a/writerperfect/source/writer/exp/xmlimp.cxx 
b/writerperfect/source/writer/exp/xmlimp.cxx
index b219d742aaf2..473899fae40c 100644
--- a/writerperfect/source/writer/exp/xmlimp.cxx
+++ b/writerperfect/source/writer/exp/xmlimp.cxx
@@ -14,7 +14,9 @@
 #include <string_view>
 
 #include <initializer_list>
-#include <unordered_map>
+#include <frozen/bits/defines.h>
+#include <frozen/bits/elsa_std.h>
+#include <frozen/unordered_map.h>
 
 #include <com/sun/star/svg/XSVGWriter.hpp>
 #include <com/sun/star/uri/UriReferenceFactory.hpp>
@@ -41,13 +43,13 @@ namespace writerperfect::exp
 namespace
 {
 /// Looks up mime type for a given image extension.
-OUString GetMimeType(const OUString& rExtension)
+OUString GetMimeType(std::u16string_view rExtension)
 {
-    static const std::unordered_map<OUString, OUString> vMimeTypes = {
-        { "gif", "image/gif" },
-        { "jpg", "image/jpeg" },
-        { "png", "image/png" },
-        { "svg", "image/svg+xml" },
+    static constexpr frozen::unordered_map<std::u16string_view, OUString, 4> 
vMimeTypes = {
+        { u"gif", u"image/gif"_ustr },
+        { u"jpg", u"image/jpeg"_ustr },
+        { u"png", u"image/png"_ustr },
+        { u"svg", u"image/svg+xml"_ustr },
     };
 
     auto it = vMimeTypes.find(rExtension);
@@ -107,8 +109,7 @@ OUString FindCoverImage(const OUString& rDocumentBaseURL, 
OUString& rMimeType,
     if (rDocumentBaseURL.isEmpty())
         return aRet;
 
-    static const std::initializer_list<std::u16string_view> vExtensions
-        = { u"gif", u"jpg", u"png", u"svg" };
+    static constexpr std::u16string_view vExtensions[] = { u"gif", u"jpg", 
u"png", u"svg" };
 
     OUString aMediaDir = FindMediaDir(rDocumentBaseURL, rFilterData);
     for (const auto& rExtension : vExtensions)
@@ -119,7 +120,7 @@ OUString FindCoverImage(const OUString& rDocumentBaseURL, 
OUString& rMimeType,
             SvFileStream aStream(aRet, StreamMode::READ);
             if (aStream.IsOpen())
             {
-                rMimeType = GetMimeType(OUString(rExtension));
+                rMimeType = GetMimeType(rExtension);
                 // File exists.
                 return aRet;
             }

Reply via email to