external/fontconfig/configs/wnt_fonts.conf |    1 +
 sal/osl/w32/module.cxx                     |    4 ++++
 sfx2/source/doc/guisaveas.cxx              |   21 +++++++++++++++++++++
 vcl/source/app/scheduler.cxx               |    3 ++-
 4 files changed, 28 insertions(+), 1 deletion(-)

New commits:
commit 2742d37ac1bd404afc7c67c5bee8917797b6bd0d
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Sun Nov 30 19:14:01 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Dec 2 22:05:47 2025 +0100

    Look for fonts also in WINDOWSUSERFONTDIR
    
    That is where fonts installed by the user goes.
    
    Change-Id: If23c542fee8a832da723d1165d38669b24b2fb57

diff --git a/external/fontconfig/configs/wnt_fonts.conf 
b/external/fontconfig/configs/wnt_fonts.conf
index 5dbcff5d2902..2aad205cc774 100644
--- a/external/fontconfig/configs/wnt_fonts.conf
+++ b/external/fontconfig/configs/wnt_fonts.conf
@@ -25,6 +25,7 @@
 <!-- Font directory list -->
 
        <dir>WINDOWSFONTDIR</dir>
+       <dir>WINDOWSUSERFONTDIR</dir>
 
 <!--
   Accept deprecated 'mono' alias, replacing it with 'monospace'
commit b61fcf59cb13cdce9641179298a2d33bd699d876
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Wed Nov 5 11:47:22 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Dec 2 22:03:50 2025 +0100

    Don't fail assertion in Task::~Task() if LibreOfficeKit is active
    
    Apps using LibreOfficeKit often have unusual lifecycles.
    
    Change-Id: Ie113d7458cff10beba2e44181d0b6ce5758a7634

diff --git a/vcl/source/app/scheduler.cxx b/vcl/source/app/scheduler.cxx
index a5b9d4ab4dcf..9b5deaba0cd9 100644
--- a/vcl/source/app/scheduler.cxx
+++ b/vcl/source/app/scheduler.cxx
@@ -38,6 +38,7 @@
 #include <saltimer.hxx>
 #include <salinst.hxx>
 #include <comphelper/profilezone.hxx>
+#include <comphelper/lok.hxx>
 #include <schedulerimpl.hxx>
 
 namespace {
@@ -765,7 +766,7 @@ Task::~Task() COVERITY_NOEXCEPT_FALSE
             mpSchedulerData->mpTask = nullptr;
     }
     else
-        assert(nullptr == mpSchedulerData || comphelper::IsFuzzing());
+        assert(nullptr == mpSchedulerData || comphelper::IsFuzzing() || 
comphelper::LibreOfficeKit::isActive());
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 63a4ed04a16b427489dd54e698735000655ac311
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Nov 4 20:40:34 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Dec 2 22:03:50 2025 +0100

    Make the CODA-W PDF export file save dialog hack a bit more secure
    
    Look for the mangled ++ name, to catch a potential mismatch in
    function signature. Also, check that the returned function pointer is
    non-null before calling it.
    
    Change-Id: Ib2e0d1cd4b3e26081800b736b74e5972d0819736

diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index b7db6153c012..2407b99abfdb 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -1754,12 +1754,16 @@ bool 
SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons
             // display any dialog yet, so call into a function in
             // CODA.cpp.
             typedef void (*ofd_t)(const std::wstring& suggestedURI, 
std::string& result);
-            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"output_file_dialog_from_core");
-            std::string newURI;
-            (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
-            if (newURI == "")
-                return false;
-            aFileName = OUString::fromUtf8(newURI.c_str());
+            // Use mangled name to catch changes in parameters...
+            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"?output_file_dialog_from_core@@YAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@AEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z");
+            if (ofd != NULL)
+            {
+                std::string newURI;
+                (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
+                if (newURI == "")
+                    return false;
+                aFileName = OUString::fromUtf8(newURI.c_str());
+            }
         }
 #endif
 
commit f4b9d6f024b27c4d8ddaabfe0eaa0b404137e3cf
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue Nov 4 17:33:28 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Dec 2 22:03:50 2025 +0100

    Add horrible hack to ask the filename when exporting PDF in CODA-W
    
    The PDF export functionality displays a dialog from JavaScript that
    allows the user to choose various PDF parameters. But unlike export to
    other formats, no system file save dialog gets displayed by CODA. So
    do something horrible: Look up a function in CODA.cpp and call it
    directly. Sorry.
    
    Change-Id: I21932b2ba67d3aab72463d51f8ef71182ca5c736

diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index ed2bcdf48ad1..b7db6153c012 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -104,6 +104,7 @@
 #include <svl/cryptosign.hxx>
 
 #ifdef _WIN32
+#include <o3tl/char16_t2wchar_t.hxx>
 #include <Shlobj.h>
 #ifdef GetTempPath
 #undef GetTempPath
@@ -1746,6 +1747,22 @@ bool 
SfxStoringHelper::FinishGUIStoreModel(::comphelper::SequenceAsHashMap::cons
     {
         OUString aFileName;
         aFileNameIter->second >>= aFileName;
+#ifdef _WIN32
+        if (comphelper::LibreOfficeKit::isActive())
+        {
+            // FIXME: Horrible hack. In CODA-W, we didn't actually
+            // display any dialog yet, so call into a function in
+            // CODA.cpp.
+            typedef void (*ofd_t)(const std::wstring& suggestedURI, 
std::string& result);
+            ofd_t ofd = (ofd_t)GetProcAddress(GetModuleHandle(NULL), 
"output_file_dialog_from_core");
+            std::string newURI;
+            (*ofd)(std::wstring(o3tl::toW(aFileName)), newURI);
+            if (newURI == "")
+                return false;
+            aFileName = OUString::fromUtf8(newURI.c_str());
+        }
+#endif
+
         aURL.SetURL( aFileName );
         DBG_ASSERT( aURL.GetProtocol() != INetProtocol::NotValid, "Illegal 
URL!" );
 
commit 4a2974f76d10a8fb2311511a90485fa61f9b00e4
Author:     Tor Lillqvist <[email protected]>
AuthorDate: Tue May 27 10:48:36 2025 +0300
Commit:     Andras Timar <[email protected]>
CommitDate: Tue Dec 2 22:03:50 2025 +0100

    Add some DISABLE_DYNLOADING ifdefs to osl/w32, as for unx
    
    Lots of things will have to be tweaked to build core statically for
    Windows. This is just one small isolated and fairly obvious trivial
    commit. (Assuming that in the disable-dynloading case, for Windows we
    want to ´drop the same dynamic library loading functions in osl as for
    Unixish systems.)
    
    Change-Id: Ica0a00d7a3d5b85e5eb933ebd5722824fbf5deeb

diff --git a/sal/osl/w32/module.cxx b/sal/osl/w32/module.cxx
index e0a2940b16f9..ec19158003ca 100644
--- a/sal/osl/w32/module.cxx
+++ b/sal/osl/w32/module.cxx
@@ -31,6 +31,8 @@
 #include <o3tl/char16_t2wchar_t.hxx>
 #include <vector>
 
+#ifndef DISABLE_DYNLOADING
+
 /*
     under WIN32, we use the void* oslModule
     as a WIN32 HANDLE (which is also a 32-bit value)
@@ -103,6 +105,8 @@ oslModule osl_loadModuleRelativeAscii(
     return osl_loadModuleRelative(baseModule, 
OUString::createFromAscii(relativePath).pData, mode);
 }
 
+#endif // !DISABLE_DYNLOADING
+
 sal_Bool SAL_CALL
 osl_getModuleHandle(rtl_uString *pModuleName, oslModule *pResult)
 {

Reply via email to