comphelper/source/misc/hash.cxx                           |   16 
 configure.ac                                              |    4 
 download.lst                                              |   28 
 external/nss/ExternalProject_nss.mk                       |    4 
 external/nss/UnpackedTarball_nss.mk                       |    4 
 external/nss/Wincompatible-function-pointer-types.patch.0 |  419 ++++++--------
 external/nss/clang-cl.patch.0                             |   11 
 external/nss/macos-dlopen.patch.0                         |   18 
 external/nss/nspr-win95-target.patch                      |   11 
 external/nss/nss-android.patch.1                          |   18 
 external/nss/nss-ios.patch                                |   36 -
 external/nss/nss.cygwin64.in32bit.patch                   |   14 
 external/nss/nss.getrandom.patch                          |   23 
 external/nss/nss.patch                                    |   16 
 external/nss/nss_macosx.patch                             |   10 
 external/nss/winnt.patch.0                                |   10 
 external/openssl/0001-const-up-ERR_str_libraries.patch.1  |   26 
 external/openssl/UnpackedTarball_openssl.mk               |    4 
 external/pdfium/Library_pdfium.mk                         |   17 
 external/pdfium/build.patch.1                             |  126 ----
 external/pdfium/inc/pch/precompiled_pdfium.hxx            |    1 
 external/skia/Library_skia.mk                             |   18 
 external/skia/fix-warnings.patch.1                        |    4 
 external/skia/fontconfig-get-typeface.patch.1             |   14 
 external/skia/make-api-visible.patch.1                    |   70 +-
 external/skia/share-grcontext.patch.1                     |  102 ++-
 external/skia/swap-buffers-rect.patch.1                   |    8 
 external/skia/windows-raster-surface-no-copies.patch.1    |    4 
 external/zlib/StaticLibrary_zlib.mk                       |    1 
 include/comphelper/hash.hxx                               |    2 
 vcl/qa/cppunit/pdfexport/pdfexport.cxx                    |    4 
 vcl/qa/cppunit/pdfexport/pdfexport2.cxx                   |    8 
 vcl/skia/SkiaHelper.cxx                                   |    2 
 vcl/skia/gdiimpl.cxx                                      |    2 
 vcl/skia/osx/gdiimpl.cxx                                  |   10 
 vcl/skia/win/gdiimpl.cxx                                  |   14 
 vcl/skia/x11/gdiimpl.cxx                                  |   18 
 vcl/source/gdi/pdfwriter_impl.cxx                         |    5 
 38 files changed, 551 insertions(+), 551 deletions(-)

New commits:
commit 12a3c9b7b4cb8e28001b2633c15ce360a197c0ae
Author:     Andras Timar <[email protected]>
AuthorDate: Fri Jan 30 10:39:39 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:39:39 2026 +0100

    Bump version to 25.2.7.5
    
    Change-Id: I9278da1c6d0b8c1e24552270202b7b90fcf7957f

diff --git a/configure.ac b/configure.ac
index d4cff85d9716..235ec3c9f124 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,7 +9,7 @@ dnl in order to create a configure script.
 # several non-alphanumeric characters, those are split off and used only for 
the
 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no 
idea.
 
-AC_INIT([LibreOffice],[25.2.7.4],[],[],[http://documentfoundation.org/])
+AC_INIT([LibreOffice],[25.2.7.5],[],[],[http://documentfoundation.org/])
 
 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just 
fine if it is installed
 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails 
hard
commit ee0a92aa6ddda54117a48a6480e085dc9a9ecbd9
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Sep 23 16:06:12 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:37:55 2026 +0100

    libvisio: upgrade to 0.1.10
    
    Generated with:
    ./autogen.sh
    ./configure
    make dist-xz
    
    Change-Id: Ida45f447bdd49bf4ee600e0f24a7bf4eb5cb0bca
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191403
    Reviewed-by: Xisco Fauli <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 63887d9aaa252ee1b1b066831b28b53867a8c67f)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191413
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Andras Timar <[email protected]>

diff --git a/download.lst b/download.lst
index 89ea4d6c884b..7dd884933617 100644
--- a/download.lst
+++ b/download.lst
@@ -642,8 +642,8 @@ TWAIN_DSM_TARBALL := twaindsm_2.4.1.orig.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-VISIO_SHA256SUM := 
4a61d086daa3f5c9db8a3fd1b6dbfc29ba756057aa6b3cc23878fd4854362af9
-VISIO_TARBALL := libvisio-0.1.9.tar.xz
+VISIO_SHA256SUM := 
9e9eff75112d4d92d92262ad7fc2599c21e26f8fc5ba54900efdc83c0501e472
+VISIO_TARBALL := libvisio-0.1.10.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit c14979b5ee7c92a70b2a56296c3d456a27b906f1
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Sep 22 11:16:40 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:37:55 2026 +0100

    libvisio: upgrade to 0.1.9
    
    Generated with:
    ./autogen.sh
    ./configure
    make dist-xz
    
    Change-Id: I7b588ca176024055486f41ddcec1394f5971f97e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191320
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 1ac9e00df08f52c884a858180a0b1c14788ad4b3)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191393
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Andras Timar <[email protected]>

diff --git a/download.lst b/download.lst
index 7657a9065d70..89ea4d6c884b 100644
--- a/download.lst
+++ b/download.lst
@@ -642,8 +642,8 @@ TWAIN_DSM_TARBALL := twaindsm_2.4.1.orig.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-VISIO_SHA256SUM := 
b4098ffbf4dcb9e71213fa0acddbd928f27bed30db2d80234813b15d53d0405b
-VISIO_TARBALL := libvisio-0.1.8.tar.xz
+VISIO_SHA256SUM := 
4a61d086daa3f5c9db8a3fd1b6dbfc29ba756057aa6b3cc23878fd4854362af9
+VISIO_TARBALL := libvisio-0.1.9.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 66bb1ad7274b13a3f2be02b1961abd48101b4bd3
Author:     Noel Grandin <[email protected]>
AuthorDate: Tue Mar 11 15:06:56 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:37:23 2026 +0100

    update to skia m133
    
    update to skia m133
    
    Change-Id: Id12146bfd28003acc146fc45fdea4d9e4323539e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182778
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    (cherry picked from commit 0ce35e70da08cccb20302f1acc36521dc1b1bec2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192894
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 5e830feb9948..7657a9065d70 100644
--- a/download.lst
+++ b/download.lst
@@ -626,8 +626,8 @@ RHINO_TARBALL := rhino-1.7.15.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-SKIA_SHA256SUM := 
103f63a8414a506c887cfe788f7653c130df1278b2cc1d1ae6827b2b90e59377
-SKIA_TARBALL := skia-m132-ee9db7d1348f76780fd0184b9b0243d653e36411.tar.xz
+SKIA_SHA256SUM := 
af3676facdf12d59a9ad5a0f63c60e6bb47f7d6bb243acdd0c6abc8c9b0b3c59
+SKIA_TARBALL := skia-m133-ecebe831881cdf52c65df518777210071f7970dd.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/skia/Library_skia.mk b/external/skia/Library_skia.mk
index dd99e6f271ab..0eb71722ea67 100644
--- a/external/skia/Library_skia.mk
+++ b/external/skia/Library_skia.mk
@@ -317,6 +317,7 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/codec/SkCodecImageGenerator \
     UnpackedTarball/skia/src/codec/SkColorPalette \
     UnpackedTarball/skia/src/codec/SkExif \
+    UnpackedTarball/skia/src/codec/SkGainmapInfo \
     UnpackedTarball/skia/src/codec/SkImageGenerator_FromEncoded \
     UnpackedTarball/skia/src/codec/SkMaskSwizzler \
     UnpackedTarball/skia/src/codec/SkPixmapUtils \
@@ -341,6 +342,7 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/codec/SkPngCodec \
     UnpackedTarball/skia/src/codec/SkPngCodecBase \
+    UnpackedTarball/skia/src/codec/SkPngCompositeChunkReader \
 ))
 
 
@@ -362,7 +364,6 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/base/SkQuads \
     UnpackedTarball/skia/src/base/SkSafeMath \
     UnpackedTarball/skia/src/base/SkSemaphore \
-    UnpackedTarball/skia/src/base/SkSharedMutex \
     UnpackedTarball/skia/src/base/SkSpinlock \
     UnpackedTarball/skia/src/base/SkTDArray \
     UnpackedTarball/skia/src/base/SkTSearch \
@@ -639,7 +640,13 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/encode/SkICC \
 ))
 
-# from file skia/gn/core.gni:792, target "skia_encode_png_srcs"
+# from file skia/gn/core.gni:792, target "skia_encode_png_base"
+#
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/src/encode/SkPngEncoderBase \
+))
+
+# from file skia/gn/core.gni:800, target "skia_encode_png_srcs"
 #
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/encode/SkPngEncoderImpl \
@@ -710,6 +717,12 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/effects/imagefilters/SkShaderImageFilter \
 ))
 
+# from file skia/gn/ports.gni:130, target "skia_ports_typeface_proxy_sources"
+#
+$(eval $(call gb_Library_add_generated_exception_objects,skia,\
+    UnpackedTarball/skia/src/ports/SkTypeface_proxy \
+))
+
 # from file skia/gn/sksl.gni:42, target "skia_sksl_sources"
 #
 $(eval $(call gb_Library_add_generated_exception_objects,skia,\
@@ -846,7 +859,6 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,skia,\
     UnpackedTarball/skia/src/utils/SkEventTracer \
     UnpackedTarball/skia/src/utils/SkFloatToDecimal \
     UnpackedTarball/skia/src/sksl/SkSLModuleDataDefault \
-    UnpackedTarball/skia/src/utils/SkJSON \
     UnpackedTarball/skia/src/utils/SkJSONWriter \
     UnpackedTarball/skia/src/utils/SkMatrix22 \
     UnpackedTarball/skia/src/utils/SkMultiPictureDocument \
diff --git a/external/skia/fix-warnings.patch.1 
b/external/skia/fix-warnings.patch.1
index cc1a6fba0a41..735f6f11aa6b 100644
--- a/external/skia/fix-warnings.patch.1
+++ b/external/skia/fix-warnings.patch.1
@@ -24,8 +24,8 @@ index f143dab013..be3cde0f4f 100644
 -    virtual void activate(bool isActive) {}
 +    virtual void activate(bool /*isActive*/) {}
  
-     const DisplayParams& getDisplayParams() { return fDisplayParams; }
-     virtual void setDisplayParams(const DisplayParams& params) = 0;
+     const DisplayParams* getDisplayParams() { return fDisplayParams.get(); }
+     virtual void setDisplayParams(std::unique_ptr<const DisplayParams>) = 0;
 --- skia/include/core/SkSamplingOptions.h.orig 2022-05-22 12:25:06.112544528 
+0200
 +++ skia/include/core/SkSamplingOptions.h      2022-05-22 12:25:09.207636134 
+0200
 @@ -97,7 +97,7 @@
diff --git a/external/skia/make-api-visible.patch.1 
b/external/skia/make-api-visible.patch.1
index 776f987a60f6..6285b4f8f9b5 100644
--- a/external/skia/make-api-visible.patch.1
+++ b/external/skia/make-api-visible.patch.1
@@ -8,7 +8,7 @@ diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
 -class WindowContext {
 +class SK_API WindowContext {
  public:
-     WindowContext(const DisplayParams&);
+     WindowContext(std::unique_ptr<const DisplayParams>);
 
 diff -ur skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h 
skia/tools/window/mac/GaneshMetalWindowContext_mac.h
 --- skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h   2024-10-12 
15:57:21
@@ -21,12 +21,14 @@ diff -ur 
skia.org/tools/window/mac/GaneshMetalWindowContext_mac.h skia/tools/win
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct MacWindowInfo;
 
--std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const MacWindowInfo&, 
const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const 
MacWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const MacWindowInfo&,
+-                                                     std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGaneshMetalForMac(const 
MacWindowInfo&,
++                                                     std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -41,12 +43,14 @@ diff -ur 
skia.org/tools/window/unix/GaneshGLWindowContext_unix.h skia/tools/wind
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct XlibWindowInfo;
 
--std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const XlibWindowInfo&, 
const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const XlibWindowInfo&,
+-                                                   std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGaneshGLForXlib(const 
XlibWindowInfo&,
++                                                   std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -61,12 +65,14 @@ diff -ur 
skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.h skia/tools/
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct XlibWindowInfo;
 
--std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const XlibWindowInfo&, 
const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const XlibWindowInfo&,
+-                                                       std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGaneshVulkanForXlib(const 
XlibWindowInfo&,
++                                                       std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -82,12 +88,12 @@ diff -ur 
skia.org/tools/window/unix/GraphiteDawnVulkanWindowContext_unix.h skia/
 
  namespace skwindow {
 @@ -15,7 +16,7 @@
- struct DisplayParams;
+ class DisplayParams;
  struct XlibWindowInfo;
 
 -std::unique_ptr<WindowContext> MakeGraphiteDawnVulkanForXlib(const 
XlibWindowInfo&,
 +SK_API std::unique_ptr<WindowContext> MakeGraphiteDawnVulkanForXlib(const 
XlibWindowInfo&,
-                                                              const 
DisplayParams&);
+                                                              
std::unique_ptr<const DisplayParams>);
  }  // namespace skwindow
 
 diff -ur skia.org/tools/window/unix/RasterWindowContext_unix.h 
skia/tools/window/unix/RasterWindowContext_unix.h
@@ -101,12 +107,14 @@ diff -ur 
skia.org/tools/window/unix/RasterWindowContext_unix.h skia/tools/window
  #include <memory>
 
  namespace skwindow {
-@@ -15,7 +16,7 @@
- struct DisplayParams;
+@@ -15,8 +16,8 @@
+ class DisplayParams;
  struct XlibWindowInfo;
 
--std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&, const 
DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeRasterForXlib(const 
XlibWindowInfo&, const DisplayParams&);
+-std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&,
+-                                                 std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeRasterForXlib(const XlibWindowInfo&,
++                                                 std::unique_ptr<const 
DisplayParams>);
  }  // namespace skwindow
 
  #endif
@@ -123,29 +131,29 @@ diff -ur 
skia.org/tools/window/win/WindowContextFactory_win.h skia/tools/window/
  namespace skwindow {
 
  class WindowContext;
- struct DisplayParams;
+ class DisplayParams;
 
  #ifdef SK_VULKAN
--std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeVulkanForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #if defined(SK_GRAPHITE)
- std::unique_ptr<WindowContext> MakeGraphiteVulkanForWin(HWND, const 
DisplayParams&);
+ std::unique_ptr<WindowContext> MakeGraphiteVulkanForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
  #endif
 
  #ifdef SK_GL
--std::unique_ptr<WindowContext> MakeGLForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeGLForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeGLForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeGLForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
 
  #ifdef SK_ANGLE
--std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeANGLEForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
 
  #ifdef SK_DIRECT3D
--std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeD3D12ForWin(HWND, 
std::unique_ptr<const DisplayParams>);
  #endif
 
  #ifdef SK_DAWN
@@ -153,8 +161,8 @@ diff -ur 
skia.org/tools/window/win/WindowContextFactory_win.h skia/tools/window/
  #endif
  #endif
 
--std::unique_ptr<WindowContext> MakeRasterForWin(HWND, const DisplayParams&);
-+SK_API std::unique_ptr<WindowContext> MakeRasterForWin(HWND, const 
DisplayParams&);
+-std::unique_ptr<WindowContext> MakeRasterForWin(HWND, std::unique_ptr<const 
DisplayParams>);
++SK_API std::unique_ptr<WindowContext> MakeRasterForWin(HWND, 
std::unique_ptr<const DisplayParams>);
 
  }  // namespace skwindow
 
diff --git a/external/skia/share-grcontext.patch.1 
b/external/skia/share-grcontext.patch.1
index 20e0db4b863d..40c6bdf9a680 100644
--- a/external/skia/share-grcontext.patch.1
+++ b/external/skia/share-grcontext.patch.1
@@ -74,8 +74,8 @@ diff -ur skia.org/tools/window/MetalWindowContext.h 
skia/tools/window/MetalWindo
 diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWindowContext.mm
 --- skia.org/tools/window/MetalWindowContext.mm        2024-10-10 
14:11:32.362258108 +0200
 +++ skia/tools/window/MetalWindowContext.mm    2024-10-10 14:11:44.341323063 
+0200
-@@ -35,50 +35,84 @@
- }
+@@ -33,54 +33,88 @@
+         , fDrawableHandle(nil) {}
 
  void MetalWindowContext::initializeContext() {
 +    fShared = fGlobalShared;
@@ -93,10 +93,10 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
 +    d->fDevice.reset(MTLCreateSystemDefaultDevice());
 +    d->fQueue.reset([*d->fDevice newCommandQueue]);
 
-     if (fDisplayParams.fMSAASampleCount > 1) {
+     if (fDisplayParams->msaaSampleCount() > 1) {
          if (@available(macOS 10.11, iOS 9.0, tvOS 9.0, *)) {
--            if (![*fDevice 
supportsTextureSampleCount:fDisplayParams.fMSAASampleCount]) {
-+            if (![*d->fDevice 
supportsTextureSampleCount:fDisplayParams.fMSAASampleCount]) {
+-            if (![*fDevice 
supportsTextureSampleCount:fDisplayParams->msaaSampleCount()]) {
++            if (![*d->fDevice 
supportsTextureSampleCount:fDisplayParams->msaaSampleCount()]) {
 +                fGlobalShared.reset();
                  return;
              }
@@ -105,7 +105,7 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
              return;
          }
      }
--    fSampleCount = fDisplayParams.fMSAASampleCount;
+-    fSampleCount = fDisplayParams->msaaSampleCount();
 -    fStencilBits = 8;
 -
 -    fValid = this->onInitializeContext();
@@ -113,13 +113,17 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
      GrMtlBackendContext backendContext = {};
 -    backendContext.fDevice.retain((GrMTLHandle)fDevice.get());
 -    backendContext.fQueue.retain((GrMTLHandle)fQueue.get());
--    fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams.fGrContextOptions);
--    if (!fContext && fDisplayParams.fMSAASampleCount > 1) {
+-    fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams->grContextOptions());
+-    if (!fContext && fDisplayParams->msaaSampleCount() > 1) {
 +    backendContext.fDevice.retain((GrMTLHandle)d->fDevice.get());
 +    backendContext.fQueue.retain((GrMTLHandle)d->fQueue.get());
-+    d->fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams.fGrContextOptions);
-+    if (!d->fContext && fDisplayParams.fMSAASampleCount > 1) {
-         fDisplayParams.fMSAASampleCount /= 2;
++    d->fContext = GrDirectContexts::MakeMetal(backendContext, 
fDisplayParams->grContextOptions());
++    if (!d->fContext && fDisplayParams->msaaSampleCount() > 1) {
+         auto newParams = DisplayParamsBuilder(fDisplayParams.get());
+         newParams.msaaSampleCount(fDisplayParams->msaaSampleCount() / 2);
+         // Don't call this->setDisplayParams because that also calls
+         // destroyContext() and initializeContext().
+         fDisplayParams = newParams.build();
 +        fGlobalShared.reset();
          this->initializeContext();
          return;
@@ -130,7 +134,7 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
 +
 +    fContext = fShared->fContext;
 +
-+    fSampleCount = fDisplayParams.fMSAASampleCount;
++    fSampleCount = fDisplayParams->msaaSampleCount();
 +    fStencilBits = 8;
 +
 +    fValid = this->onInitializeContext();
@@ -199,6 +203,37 @@ diff -ur skia.org/tools/window/MetalWindowContext.mm 
skia/tools/window/MetalWind
 +}
 +
  }   //namespace skwindow::internal
+diff -ur skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.cpp.orig 
skia/tools/window/unix/GaneshVulkanWindowContext_unix.cpp
+--- skia.org/tools/window/unix/GaneshVulkanWindowContext_unix.cpp.orig 
2025-01-17 09:32:18.346355282 -0700
++++ skia/tools/window/unix/GaneshVulkanWindowContext_unix.cpp  2025-01-17 
09:34:12.368151987 -0700
+@@ -23,7 +23,7 @@
+         return nullptr;
+     }
+
+-    auto createVkSurface = [&info, instProc](VkInstance instance) -> 
VkSurfaceKHR {
++    internal::VulkanWindowContext::CreateVkSurfaceFn createVkSurface = 
[&info, instProc](VkInstance instance) -> VkSurfaceKHR {
+         static PFN_vkCreateXcbSurfaceKHR createXcbSurfaceKHR = nullptr;
+         if (!createXcbSurfaceKHR) {
+             createXcbSurfaceKHR =
+@@ -47,6 +47,9 @@
+
+         return surface;
+     };
++    // Allow creating just the shared context, without an associated window.
++    if(info.fWindow == 0)
++        createVkSurface = nullptr;
+
+     auto canPresent = [&info, instProc](VkInstance instance,
+                                         VkPhysicalDevice physDev,
+@@ -68,7 +71,7 @@
+     };
+     std::unique_ptr<WindowContext> ctx(new internal::VulkanWindowContext(
+             std::move(displayParams), createVkSurface, canPresent, instProc));
+-    if (!ctx->isValid()) {
++    if (!ctx->isValid() && createVkSurface != nullptr) {
+         return nullptr;
+     }
+     return ctx;
 diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanWindowContext.cpp
 --- skia.org/tools/window/VulkanWindowContext.cpp      2024-10-10 
14:11:32.362258108 +0200
 +++ skia/tools/window/VulkanWindowContext.cpp  2024-10-10 14:15:27.179546520 
+0200
@@ -218,7 +253,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 
  namespace skwindow::internal {
 
-@@ -55,32 +59,43 @@
+@@ -55,36 +59,47 @@
  }
 
  void VulkanWindowContext::initializeContext() {
@@ -238,11 +273,17 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 +    skgpu::VulkanBackendContext& backendContext = 
fGlobalShared->backendContext;
      skgpu::VulkanExtensions extensions;
      VkPhysicalDeviceFeatures2 features;
-     if (!sk_gpu_test::CreateVkBackendContext(getInstanceProc, 
&backendContext, &extensions,
--                                             &features, &fDebugCallback, 
&fPresentQueueIndex,
-+                                             &d->features, 
&d->fDebugCallback, &d->fPresentQueueIndex,
+     if (!sk_gpu_test::CreateVkBackendContext(getInstanceProc,
+                                              &backendContext,
+                                              &extensions,
+-                                             &features,
+-                                             &fDebugCallback,
+-                                             &fPresentQueueIndex,
++                                             &d->features,
++                                             &d->fDebugCallback,
++                                             &d->fPresentQueueIndex,
                                               fCanPresentFn,
-                                              
fDisplayParams.fCreateProtectedNativeBackend)) {
+                                              
fDisplayParams->createProtectedNativeBackend())) {
 +        sk_gpu_test::FreeVulkanFeaturesStructs(&d->features);
 +        fGlobalShared.reset();
          sk_gpu_test::FreeVulkanFeaturesStructs(&features);
@@ -299,7 +340,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -    GET_PROC(DestroyInstance);
 -    if (fDebugCallback != VK_NULL_HANDLE) {
 -        GET_PROC(DestroyDebugReportCallbackEXT);
-+    d->fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams.fGrContextOptions);
++    d->fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams->grContextOptions());
 +
 +    GET_PROC_GLOBAL(DestroyInstance);
 +    GET_DEV_PROC_GLOBAL(DestroyDevice);
@@ -333,7 +374,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      GET_DEV_PROC(CreateSwapchainKHR);
      GET_DEV_PROC(DestroySwapchainKHR);
      GET_DEV_PROC(GetSwapchainImagesKHR);
-@@ -121,56 +154,44 @@
+@@ -121,55 +154,43 @@
      GET_DEV_PROC(QueuePresentKHR);
      GET_DEV_PROC(GetDeviceQueue);
 
@@ -347,7 +388,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -                                                  skgpu::ThreadSafe::kNo,
 -                                                  /*blockSize=*/std::nullopt);
 -
--    fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams.fGrContextOptions);
+-    fContext = GrDirectContexts::MakeVulkan(backendContext, 
fDisplayParams->grContextOptions());
 +    // No actual window, used just to create the shared GrContext.
 +    if(fCreateVkSurfaceFn == nullptr)
 +        return;
@@ -373,7 +414,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
          return;
      }
 
-     if (!this->createSwapchain(-1, -1, fDisplayParams)) {
+     if (!this->createSwapchain(-1, -1)) {
          this->destroyContext();
 -        sk_gpu_test::FreeVulkanFeaturesStructs(&features);
          return;
@@ -384,8 +425,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
 -    sk_gpu_test::FreeVulkanFeaturesStructs(&features);
  }
 
- bool VulkanWindowContext::createSwapchain(int width, int height,
-                                           const DisplayParams& params) {
+ bool VulkanWindowContext::createSwapchain(int width, int height) {
      // check for capabilities
      VkSurfaceCapabilitiesKHR caps;
 -    VkResult res = fGetPhysicalDeviceSurfaceCapabilitiesKHR(fPhysicalDevice, 
fSurface, &caps);
@@ -489,7 +529,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
          info.fLevelCount = 1;
 -        info.fCurrentQueueFamily = fPresentQueueIndex;
 +        info.fCurrentQueueFamily = fShared->fPresentQueueIndex;
-         info.fProtected = 
skgpu::Protected(fDisplayParams.fCreateProtectedNativeBackend);
+         info.fProtected = 
skgpu::Protected(fDisplayParams->createProtectedNativeBackend());
          info.fSharingMode = sharingMode;
 
 @@ -418,8 +438,8 @@
@@ -611,7 +651,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.cpp 
skia/tools/window/VulkanW
      }
      if (VK_ERROR_OUT_OF_DATE_KHR == res) {
          // tear swapchain down and try again
-         if (!this->createSwapchain(-1, -1, fDisplayParams)) {
+         if (!this->createSwapchain(-1, -1)) {
 -            GR_VK_CALL(fInterface, DestroySemaphore(fDevice, semaphore, 
nullptr));
 +            GR_VK_CALL(fShared->fInterface, 
DestroySemaphore(fShared->fDevice, semaphore, nullptr));
              return nullptr;
@@ -673,10 +713,10 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 -    bool isValid() override { return fDevice != VK_NULL_HANDLE; }
 +    bool isValid() override { return fSurface != VK_NULL_HANDLE; }
 
-     void resize(int w, int h) override {
-         this->createSwapchain(w, h, fDisplayParams);
+     void resize(int w, int h) override { this->createSwapchain(w, h); }
+
 @@ -45,9 +49,15 @@
-     VulkanWindowContext(const DisplayParams&, CreateVkSurfaceFn, CanPresentFn,
+                         CanPresentFn,
                          PFN_vkGetInstanceProcAddr);
 
 +    static const VkPhysicalDeviceProperties& getPhysDeviceProperties() {
@@ -779,8 +819,8 @@ diff -ur 
skia.org/tools/window/win/VulkanWindowContext_win.cpp skia/tools/window
                                    uint32_t queueFamilyIndex) {
 @@ -66,7 +69,7 @@
 
-     std::unique_ptr<WindowContext> ctx(
-             new internal::VulkanWindowContext(params, createVkSurface, 
canPresent, instProc));
+     std::unique_ptr<WindowContext> ctx(new internal::VulkanWindowContext(
+             std::move(params), createVkSurface, canPresent, instProc));
 -    if (!ctx->isValid()) {
 +    if (!ctx->isValid() && createVkSurface != nullptr) {
          return nullptr;
diff --git a/external/skia/swap-buffers-rect.patch.1 
b/external/skia/swap-buffers-rect.patch.1
index 0b02be761a50..292adc70836b 100644
--- a/external/skia/swap-buffers-rect.patch.1
+++ b/external/skia/swap-buffers-rect.patch.1
@@ -26,7 +26,7 @@ diff -ur 
skia.org/tools/window/unix/RasterWindowContext_unix.cpp skia/tools/wind
 --- skia.org/tools/window/unix/RasterWindowContext_unix.cpp    2024-10-05 
18:16:04.521814026 +0200
 +++ skia/tools/window/unix/RasterWindowContext_unix.cpp        2024-10-05 
18:18:49.554847490 +0200
 @@ -24,7 +24,7 @@
-     void setDisplayParams(const DisplayParams& params) override;
+     void setDisplayParams(std::unique_ptr<const DisplayParams> params) 
override;
 
  protected:
 -    void onSwapBuffers() override;
@@ -70,7 +70,7 @@ diff -ur skia.org/tools/window/VulkanWindowContext.h 
skia/tools/window/VulkanWin
 --- skia.org/tools/window/VulkanWindowContext.h        2024-10-05 
18:16:04.521814026 +0200
 +++ skia/tools/window/VulkanWindowContext.h    2024-10-05 18:19:54.713202674 
+0200
 @@ -70,7 +70,7 @@
-     bool createSwapchain(int width, int height, const DisplayParams& params);
+     bool createSwapchain(int width, int height);
      bool createBuffers(VkFormat format, VkImageUsageFlags, SkColorType 
colorType, VkSharingMode);
      void destroyBuffers();
 -    void onSwapBuffers() override;
@@ -83,7 +83,7 @@ diff -ur 
skia.org/tools/window/win/RasterWindowContext_win.cpp skia/tools/window
 --- skia.org/tools/window/win/RasterWindowContext_win.cpp      2024-10-05 
18:16:04.521814026 +0200
 +++ skia/tools/window/win/RasterWindowContext_win.cpp  2024-10-05 
18:20:58.138561375 +0200
 @@ -27,7 +27,7 @@
-     void setDisplayParams(const DisplayParams& params) override;
+     void setDisplayParams(std::unique_ptr<const DisplayParams> params) 
override;
 
  protected:
 -    void onSwapBuffers() override;
@@ -125,7 +125,7 @@ diff -ur skia.org/tools/window/WindowContext.cpp 
skia/tools/window/WindowContext
 +    this->onSwapBuffers(rect);
  }
 
- #if defined(SK_GRAPHITE)
+ bool WindowContext::supportsGpuTimer() const {
 diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
 --- skia.org/tools/window/WindowContext.h      2024-10-05 18:16:04.521814026 
+0200
 +++ skia/tools/window/WindowContext.h  2024-10-05 18:22:12.945998819 +0200
diff --git a/external/skia/windows-raster-surface-no-copies.patch.1 
b/external/skia/windows-raster-surface-no-copies.patch.1
index 9c59c252c1f6..1aaf43a2537c 100644
--- a/external/skia/windows-raster-surface-no-copies.patch.1
+++ b/external/skia/windows-raster-surface-no-copies.patch.1
@@ -18,8 +18,8 @@ diff -ur 
skia.org/tools/window/win/RasterWindowContext_win.cpp skia/tools/window
 +    // Do not use a packed DIB bitmap, SkSurface_Raster::onNewImageSnapshot() 
does
 +    // a deep copy if it does not own the pixels.
 
-     SkImageInfo info = SkImageInfo::Make(w, h, fDisplayParams.fColorType, 
kPremul_SkAlphaType,
-                                          fDisplayParams.fColorSpace);
+     SkImageInfo info = SkImageInfo::Make(
+             w, h, fDisplayParams->colorType(), kPremul_SkAlphaType, 
fDisplayParams->colorSpace());
 -    fBackbufferSurface = SkSurfaces::WrapPixels(info, pixels, 
sizeof(uint32_t) * w);
 +    fBackbufferSurface = SkSurfaces::Raster(info);
  }
diff --git a/vcl/skia/osx/gdiimpl.cxx b/vcl/skia/osx/gdiimpl.cxx
index 7fa95e8d9fab..8043fb2e2b72 100644
--- a/vcl/skia/osx/gdiimpl.cxx
+++ b/vcl/skia/osx/gdiimpl.cxx
@@ -72,8 +72,8 @@ void 
AquaSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
     assert(!mWindowContext);
     assert(!mSurface);
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
-    displayParams.fColorType = kN32_SkColorType;
+    skwindow::DisplayParamsBuilder displayParams;
+    displayParams.colorType(kN32_SkColorType);
     skwindow::MacWindowInfo macWindow;
     macWindow.fMainView = mrShared.mpFrame->mpNSView;
     mScaling = getWindowScaling();
@@ -86,7 +86,7 @@ void 
AquaSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
             mSurface = createSkSurface(GetWidth() * mScaling, GetHeight() * 
mScaling);
             break;
         case RenderMetal:
-            mWindowContext = skwindow::MakeGaneshMetalForMac(macWindow, 
displayParams);
+            mWindowContext = skwindow::MakeGaneshMetalForMac(macWindow, 
displayParams.build());
             // Like with other GPU contexts, create a proxy offscreen surface 
(see
             // flushSurfaceToWindowContext()). Here it's additionally needed 
because
             // it appears that Metal surfaces cannot be read from, which would 
break things
@@ -411,10 +411,10 @@ namespace
 {
 std::unique_ptr<skwindow::WindowContext> createMetalWindowContext(bool 
/*temporary*/)
 {
-    skwindow::DisplayParams displayParams;
+    skwindow::DisplayParamsBuilder displayParams;
     skwindow::MacWindowInfo macWindow;
     macWindow.fMainView = nullptr;
-    return skwindow::MakeGaneshMetalForMac(macWindow, displayParams);
+    return skwindow::MakeGaneshMetalForMac(macWindow, displayParams.build());
 }
 }
 
diff --git a/vcl/skia/win/gdiimpl.cxx b/vcl/skia/win/gdiimpl.cxx
index 93b4ed75980a..367cfa51af7b 100644
--- a/vcl/skia/win/gdiimpl.cxx
+++ b/vcl/skia/win/gdiimpl.cxx
@@ -257,18 +257,20 @@ void 
WinSkiaSalGraphicsImpl::createWindowSurfaceInternal(bool forceRaster)
     assert(!mWindowContext);
     assert(!mSurface);
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
     assert(GetWidth() > 0 && GetHeight() > 0);
-    displayParams.fSurfaceProps = *surfaceProps();
+    skwindow::DisplayParamsBuilder aDispParamBuilder;
+    aDispParamBuilder.surfaceProps(*surfaceProps());
     switch (forceRaster ? RenderRaster : renderMethodToUse())
     {
         case RenderRaster:
-            mWindowContext = skwindow::MakeRasterForWin(mWinParent.gethWnd(), 
displayParams);
+            mWindowContext
+                = skwindow::MakeRasterForWin(mWinParent.gethWnd(), 
aDispParamBuilder.build());
             if (mWindowContext)
                 mSurface = mWindowContext->getBackbufferSurface();
             break;
         case RenderVulkan:
-            mWindowContext = skwindow::MakeVulkanForWin(mWinParent.gethWnd(), 
displayParams);
+            mWindowContext
+                = skwindow::MakeVulkanForWin(mWinParent.gethWnd(), 
aDispParamBuilder.build());
             // See flushSurfaceToWindowContext().
             if (mWindowContext)
                 mSurface = createSkSurface(GetWidth(), GetHeight());
@@ -567,8 +569,8 @@ namespace
 std::unique_ptr<skwindow::WindowContext> createVulkanWindowContext(bool 
/*temporary*/)
 {
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
-    return skwindow::MakeVulkanForWin(nullptr, displayParams);
+    skwindow::DisplayParamsBuilder displayParams;
+    return skwindow::MakeVulkanForWin(nullptr, displayParams.build());
 }
 }
 
diff --git a/vcl/skia/x11/gdiimpl.cxx b/vcl/skia/x11/gdiimpl.cxx
index 34df45fa7d09..103aa7329c6a 100644
--- a/vcl/skia/x11/gdiimpl.cxx
+++ b/vcl/skia/x11/gdiimpl.cxx
@@ -67,14 +67,14 @@ X11SkiaSalGraphicsImpl::createWindowContext(Display* 
display, Drawable drawable,
                                             RenderMethod renderMethod, bool 
temporary)
 {
     SkiaZone zone;
-    skwindow::DisplayParams displayParams;
-    displayParams.fColorType = kN32_SkColorType;
+    skwindow::DisplayParamsBuilder displayParamsBuilder;
+    displayParamsBuilder.colorType(kN32_SkColorType);
 #if defined LINUX
     // WORKAROUND: VSync causes freezes that can even temporarily freeze the 
entire desktop.
     // This happens even with the latest 450.66 drivers despite them claiming 
a fix for vsync.
     // 
https://forums.developer.nvidia.com/t/hangs-freezes-when-vulkan-v-sync-vk-present-mode-fifo-khr-is-enabled/67751
     if (getVendor() == DriverBlocklist::VendorNVIDIA)
-        displayParams.fDisableVsync = true;
+        displayParamsBuilder.disableVsync(true);
 #endif
     skwindow::XlibWindowInfo winInfo;
     assert(display);
@@ -103,17 +103,19 @@ X11SkiaSalGraphicsImpl::createWindowContext(Display* 
display, Drawable drawable,
     switch (renderMethod)
     {
         case RenderRaster:
+        {
             // Make sure we ask for color type that matches the X11 visual. If 
red mask
             // is larger value than blue mask, then on little endian this 
means blue is first.
             // This should also preferably match SK_R32_SHIFT set in 
config_skia.h, as that
             // improves performance, the common setup seems to be BGRA 
(possibly because of
             // choosing OpenGL-capable visual).
-            displayParams.fColorType
-                = (visual->red_mask > visual->blue_mask ? 
kBGRA_8888_SkColorType
-                                                        : 
kRGBA_8888_SkColorType);
-            return skwindow::MakeRasterForXlib(winInfo, displayParams);
+            displayParamsBuilder.colorType(visual->red_mask > visual->blue_mask
+                                               ? kBGRA_8888_SkColorType
+                                               : kRGBA_8888_SkColorType);
+            return skwindow::MakeRasterForXlib(winInfo, 
displayParamsBuilder.build());
+        }
         case RenderVulkan:
-            return skwindow::MakeGaneshVulkanForXlib(winInfo, displayParams);
+            return skwindow::MakeGaneshVulkanForXlib(winInfo, 
displayParamsBuilder.build());
         case RenderMetal:
             abort();
             break;
commit 6c41e302bd5ae21c2c58cdd54253d9c2075ef01e
Author:     Noel Grandin <[email protected]>
AuthorDate: Tue Mar 11 13:13:31 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:37:23 2026 +0100

    update to skia m132
    
    dropping patch that is already upstream
    
    Change-Id: I7f0dc4b964499eb1ea6db0b32846ed9328f22ced
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182768
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    (cherry picked from commit 5284fbe7b4358426f4236157009dfb9e6c69a2f7)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192893
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index e79578742c16..5e830feb9948 100644
--- a/download.lst
+++ b/download.lst
@@ -626,8 +626,8 @@ RHINO_TARBALL := rhino-1.7.15.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-SKIA_SHA256SUM := 
17fe9e70ba51a2873b805e2ad7617046d4b8449cde5a4d29cba353c2c1921325
-SKIA_TARBALL := skia-m131-47af57460e62268bdee4ada42e9c37999411da80.tar.xz
+SKIA_SHA256SUM := 
103f63a8414a506c887cfe788f7653c130df1278b2cc1d1ae6827b2b90e59377
+SKIA_TARBALL := skia-m132-ee9db7d1348f76780fd0184b9b0243d653e36411.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/skia/fontconfig-get-typeface.patch.1 
b/external/skia/fontconfig-get-typeface.patch.1
index e4f07d6c5bd6..6653b50255b5 100644
--- a/external/skia/fontconfig-get-typeface.patch.1
+++ b/external/skia/fontconfig-get-typeface.patch.1
@@ -1,10 +1,10 @@
 diff -ur skia.org/include/ports/SkFontMgr_fontconfig.h 
skia/include/ports/SkFontMgr_fontconfig.h
 --- skia.org/include/ports/SkFontMgr_fontconfig.h      2024-10-09 
10:25:16.421928663 +0200
 +++ skia/include/ports/SkFontMgr_fontconfig.h  2024-10-09 10:27:17.914640682 
+0200
-@@ -19,4 +19,9 @@
-  */
+@@ -21,4 +21,9 @@
+ class SkFontScanner;
+ SK_API sk_sp<SkFontMgr> SkFontMgr_New_FontConfig(FcConfig* fc, 
std::unique_ptr<SkFontScanner> scanner);
  SK_API sk_sp<SkFontMgr> SkFontMgr_New_FontConfig(FcConfig* fc);
-
 +struct _FcPattern;
 +typedef struct _FcPattern FcPattern;
 +class SkTypeface;
@@ -22,13 +22,13 @@ diff -ur skia.org/src/ports/SkFontMgr_fontconfig.cpp 
skia/src/ports/SkFontMgr_fo
      sk_sp<SkTypeface> createTypefaceFromFcPattern(SkAutoFcPattern pattern) 
const {
          if (!pattern) {
              return nullptr;
-@@ -966,6 +967,16 @@
-     }
- };
+@@ -1043,6 +1044,16 @@
+     return sk_make_sp<SkFontMgr_fontconfig>(fc, std::move(scanner));
+ }
 
 -sk_sp<SkFontMgr> SkFontMgr_New_FontConfig(FcConfig* fc) {
 +SK_API sk_sp<SkFontMgr> SkFontMgr_New_FontConfig(FcConfig* fc) {
-     return sk_make_sp<SkFontMgr_fontconfig>(fc);
+     return sk_make_sp<SkFontMgr_fontconfig>(fc, 
SkFontScanner_Make_FreeType());
  }
 +
 +SK_API sk_sp<SkTypeface> SkFontMgr_createTypefaceFromFcPattern(const 
sk_sp<SkFontMgr>& mgr, FcPattern* pattern)
commit c8431cc8391347924df793c1d7bbbf3195137d0f
Author:     Noel Grandin <[email protected]>
AuthorDate: Mon Mar 10 15:48:39 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:37:23 2026 +0100

    update to skia m131
    
    Change-Id: If300d83a61389d19371d153a399eea10c2d87dd8
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182739
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>
    (cherry picked from commit 8c74df27aad015eec75c24306904c8c73f3ab4f5)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192892
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/download.lst b/download.lst
index 9ea907f7438e..e79578742c16 100644
--- a/download.lst
+++ b/download.lst
@@ -626,8 +626,8 @@ RHINO_TARBALL := rhino-1.7.15.zip
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-SKIA_SHA256SUM := 
53f55303821158b6de9e6b90f1cc3a548611a7e430c1a0883ff159a8db89677d
-SKIA_TARBALL := skia-m130-3c64459d5df2fa9794b277f0959ed8a92552bf4c.tar.xz
+SKIA_SHA256SUM := 
17fe9e70ba51a2873b805e2ad7617046d4b8449cde5a4d29cba353c2c1921325
+SKIA_TARBALL := skia-m131-47af57460e62268bdee4ada42e9c37999411da80.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/skia/share-grcontext.patch.1 
b/external/skia/share-grcontext.patch.1
index 20f410b48bc9..20e0db4b863d 100644
--- a/external/skia/share-grcontext.patch.1
+++ b/external/skia/share-grcontext.patch.1
@@ -793,7 +793,7 @@ diff -ur skia.org/tools/window/WindowContext.h 
skia/tools/window/WindowContext.h
  #include "include/core/SkRefCnt.h"
  #include "include/core/SkSurfaceProps.h"
  #include "include/gpu/ganesh/GrTypes.h"
-+#include "include/gpu/GrDirectContext.h"
++#include "include/gpu/ganesh/GrDirectContext.h"
  #include "tools/window/DisplayParams.h"
 
 -class GrDirectContext;
diff --git a/vcl/skia/SkiaHelper.cxx b/vcl/skia/SkiaHelper.cxx
index b8e9f7a89373..fdff5e464380 100644
--- a/vcl/skia/SkiaHelper.cxx
+++ b/vcl/skia/SkiaHelper.cxx
@@ -51,7 +51,7 @@ bool isAlphaMaskBlendingEnabled() { return false; }
 #include <SkPaint.h>
 #include <SkSurface.h>
 #include <SkGraphics.h>
-#include <GrDirectContext.h>
+#include <ganesh/GrDirectContext.h>
 #include <SkRuntimeEffect.h>
 #include <SkStream.h>
 #include <SkTileMode.h>
diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx
index f8a0ed1bf693..de46b67ef073 100644
--- a/vcl/skia/gdiimpl.cxx
+++ b/vcl/skia/gdiimpl.cxx
@@ -37,7 +37,7 @@
 #include <SkRegion.h>
 #include <SkPathEffect.h>
 #include <SkDashPathEffect.h>
-#include <GrBackendSurface.h>
+#include <ganesh/GrBackendSurface.h>
 #include <SkTextBlob.h>
 #include <SkRSXform.h>
 
commit dfe2db3ac0678e4d21e1fdebaf0ab7eed0e44c1b
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Mar 31 10:29:29 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:36:39 2026 +0100

    postgresql: upgrade to 15.15
    
    According to https://www.postgresql.org/support/versioning/
    the last release of branch 14 is on November 12, 2026
    Upgrade master branch to branch 15 to avoid reaching the EOL
    
    Downloaded from 
https://ftp.postgresql.org/pub/source/v15.15/postgresql-15.15.tar.bz2
    
    Change-Id: Iff451dcc6f1f4dfaa763869056e610eee4a946d7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193978
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 1b89a45baa7214977350ea6558b2c2f3af6c4a1a)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196908
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index ca01683ca173..9ea907f7438e 100644
--- a/download.lst
+++ b/download.lst
@@ -585,8 +585,8 @@ POPPLER_DATA_TARBALL := poppler-data-0.4.12.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-POSTGRESQL_SHA256SUM := 
727e9e334bc1a31940df808259f69fe47a59f6d42174b22ae62d67fe7a01ad80
-POSTGRESQL_TARBALL := postgresql-14.19.tar.bz2
+POSTGRESQL_SHA256SUM := 
5753aaeb8b09cbf61016f78aa69bf5cbdf01b43263f010cbf168c82896213aaa
+POSTGRESQL_TARBALL := postgresql-15.15.tar.bz2
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 4f4021a0de8f1820ad0e4f7911e08183bcd2c758
Author:     Michael Stahl <[email protected]>
AuthorDate: Tue Jan 13 11:07:32 2026 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:36:09 2026 +0100

    libpng: upgrade to release 1.6.54
    
    Fixes CVE-2026-22695 CVE-2026-22801
    
    Change-Id: Id7c4c4d2ffa583ca1eeec23720a4ce74b819305f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197183
    Reviewed-by: Stephan Bergmann <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/download.lst b/download.lst
index d4ca78118c39..ca01683ca173 100644
--- a/download.lst
+++ b/download.lst
@@ -568,8 +568,8 @@ PIXMAN_TARBALL := pixman-0.42.2.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-LIBPNG_SHA256SUM := 
1d3fb8ccc2932d04aa3663e22ef5ef490244370f4e568d7850165068778d98d4
-LIBPNG_TARBALL := libpng-1.6.53.tar.xz
+LIBPNG_SHA256SUM := 
01c9d8a303c941ec2c511c14312a3b1d36cedb41e2f5168ccdaa85d53b887805
+LIBPNG_TARBALL := libpng-1.6.54.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 7c10988e0122a64524a59974bc81e4b86c6aee97
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue Dec 9 00:20:52 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:36:08 2026 +0100

    libpng: upgrade to 1.6.53
    
    Downloaded from
    http://prdownloads.sourceforge.net/libpng/libpng-1.6.53.tar.xz?download
    
    Change-Id: I09a817614658880cf1d4e0a162597b2d675bc4e0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195245
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 50b39ceb42dda3234e63eebf8d3baedac58ca0f6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/197182
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index bba61ea6e0ec..d4ca78118c39 100644
--- a/download.lst
+++ b/download.lst
@@ -568,8 +568,8 @@ PIXMAN_TARBALL := pixman-0.42.2.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-LIBPNG_SHA256SUM := 
36bd726228ec93a3b6c22fdb49e94a67b16f2fe9b39b78b7cb65772966661ccc
-LIBPNG_TARBALL := libpng-1.6.52.tar.xz
+LIBPNG_SHA256SUM := 
1d3fb8ccc2932d04aa3663e22ef5ef490244370f4e568d7850165068778d98d4
+LIBPNG_TARBALL := libpng-1.6.53.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 424846d0c01238ac7fa44e962bcc12a34f35c0cc
Author:     Michael Stahl <[email protected]>
AuthorDate: Thu Dec 4 10:25:37 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:36:08 2026 +0100

    libpng: upgrade to release 1.6.52
    
    Fixes CVE-2025-66293
    
    Change-Id: I1f0aefccf2b80d14e70b423381c121a97e510045
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194979
    Reviewed-by: Stephan Bergmann <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/download.lst b/download.lst
index 197f27c189f6..bba61ea6e0ec 100644
--- a/download.lst
+++ b/download.lst
@@ -568,8 +568,8 @@ PIXMAN_TARBALL := pixman-0.42.2.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-LIBPNG_SHA256SUM := 
a050a892d3b4a7bb010c3a95c7301e49656d72a64f1fc709a90b8aded192bed2
-LIBPNG_TARBALL := libpng-1.6.51.tar.xz
+LIBPNG_SHA256SUM := 
36bd726228ec93a3b6c22fdb49e94a67b16f2fe9b39b78b7cb65772966661ccc
+LIBPNG_TARBALL := libpng-1.6.52.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit c7c7f8316412ce6248ef3cc0307d12373ef938ee
Author:     Michael Stahl <[email protected]>
AuthorDate: Mon Nov 24 10:07:38 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:36:08 2026 +0100

    libpng: upgrade to release 1.6.51
    
    Fixes CVE-2025-64505, CVE-2025-64506, CVE-2025-64720, CVE-2025-65018
    
    Change-Id: Id58827859de899aea020f43835f2b37bf262ed33
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194421
    Reviewed-by: Stephan Bergmann <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/download.lst b/download.lst
index a2d578d6256a..197f27c189f6 100644
--- a/download.lst
+++ b/download.lst
@@ -568,8 +568,8 @@ PIXMAN_TARBALL := pixman-0.42.2.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-LIBPNG_SHA256SUM := 
4df396518620a7aa3651443e87d1b2862e4e88cad135a8b93423e01706232307
-LIBPNG_TARBALL := libpng-1.6.50.tar.xz
+LIBPNG_SHA256SUM := 
a050a892d3b4a7bb010c3a95c7301e49656d72a64f1fc709a90b8aded192bed2
+LIBPNG_TARBALL := libpng-1.6.51.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 5d22b7de5a727973258d6689354d8591950ea8aa
Author:     Miklos Vajna <[email protected]>
AuthorDate: Fri Feb 14 13:46:09 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:35:28 2026 +0100

    configure: fix --disable-skia build of pdfium
    
    A problem since commit 6007fbef5c2e4a0b80a4c0031ff36117aa41e63f (Update
    pdfium to 7012, 2025-02-13), it's one thing that pdfium needs to be
    built with clang-cl on Windows (similar to Skia), but our configure
    didn't configure clang-cl when skia was off. So do it when either skia
    or pdfium is enabled.
    
    Reported at
    
<https://lists.freedesktop.org/archives/libreoffice/2025-February/093003.html>.
    
    (cherry picked from commit 1f725b2c2afae70d7886b89a2936ab9ced53b599)
    
    Change-Id: I261b98511b664182d46a4a11ecbb40ad91663c41
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182918
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/configure.ac b/configure.ac
index 44f5fbf6721c..d4cff85d9716 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12847,7 +12847,7 @@ LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
 LO_CLANG_VERSION=
 HAVE_LO_CLANG_DLLEXPORTINLINES=
 
-if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
+if test \( "$ENABLE_SKIA" = TRUE -o "$ENABLE_PDFIUM" = TRUE \) -a 
"$COM_IS_CLANG" != TRUE; then
     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
         AC_MSG_CHECKING([for Clang])
         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
commit 7e4b418bb7ff9a2d0db56335df121cc31383d66d
Author:     Miklos Vajna <[email protected]>
AuthorDate: Thu Feb 13 13:45:38 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:35:28 2026 +0100

    Update pdfium to 7012
    
    Windows has to switch to clang-cl, see
    <https://groups.google.com/g/pdfium/c/d7KZi_wePHs/m/7eZyhYhVDAAJ> "Does
    anyone still use MSVC?", similar to what skia does already.
    
    This also allows reverting the CppunitTest_vcl_pdfexport and
    CppunitTest_vcl_pdfexport2 test tweaks from commit
    59c5a7d5c7502770896491a59c73de3c627afcc5 (Update pdfium to 6764,
    2024-10-14).
    
    (cherry picked from commit 6007fbef5c2e4a0b80a4c0031ff36117aa41e63f)
    
    Change-Id: I14052c74c551c4412a13a77eac6284455365d888
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182915
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/download.lst b/download.lst
index 4c20f36c48a5..a2d578d6256a 100644
--- a/download.lst
+++ b/download.lst
@@ -558,8 +558,8 @@ PAGEMAKER_TARBALL := libpagemaker-0.0.4.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-PDFIUM_SHA256SUM := 
03aabafd8bed319f87aa96871264dc599879e482a0923450070dac987c8a671e
-PDFIUM_TARBALL := pdfium-6887.tar.bz2
+PDFIUM_SHA256SUM := 
e647ca4fcc2c91d9dca717452e1b1be1ab6155ac4977dca716041652c7b10bdd
+PDFIUM_TARBALL := pdfium-7012.tar.bz2
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/pdfium/Library_pdfium.mk 
b/external/pdfium/Library_pdfium.mk
index 326575ac46c2..748f6df053d9 100644
--- a/external/pdfium/Library_pdfium.mk
+++ b/external/pdfium/Library_pdfium.mk
@@ -13,7 +13,17 @@ $(eval $(call gb_Library_use_unpacked,pdfium,pdfium))
 
 $(eval $(call gb_Library_set_warnings_disabled,pdfium))
 
-$(eval $(call 
gb_Library_set_precompiled_header,pdfium,external/pdfium/inc/pch/precompiled_pdfium))
+$(eval $(call gb_Library_use_clang,pdfium))
+#This currently results in all sorts of compile complaints
+#$(eval $(call 
gb_Library_set_precompiled_header,pdfium,external/pdfium/inc/pch/precompiled_pdfium))
+# The clang-cl provided with at least VS 2019 16.11.28 is known-broken with 
-std:c++20:
+ifneq ($(filter -std:c++20,$(CXXFLAGS_CXX11)),)
+ifeq ($(LO_CLANG_VERSION),120000)
+$(eval $(call gb_Library_add_cxxflags,pdfium, \
+    -std:c++17 \
+))
+endif
+endif
 
 $(eval $(call gb_Library_set_include,pdfium,\
     -I$(gb_UnpackedTarball_workdir)/pdfium \
diff --git a/external/pdfium/build.patch.1 b/external/pdfium/build.patch.1
index 6fe32f6b76ca..144d1748eae9 100644
--- a/external/pdfium/build.patch.1
+++ b/external/pdfium/build.patch.1
@@ -77,3 +77,15 @@ index 8026a75d5..34c20d62f 100644
    static_assert(kModeKeyForMode.size() == FPDF_ANNOT_APPEARANCEMODE_COUNT,
                  "length of kModeKeyForMode should be equal to "
                  "FPDF_ANNOT_APPEARANCEMODE_COUNT");
+--- a/core/fxcrt/fx_memory_wrappers.h  2025-02-13 13:38:35.761778900 +0100
++++ b/core/fxcrt/fx_memory_wrappers.h  2025-02-13 13:38:48.136654800 +0100
+@@ -33,9 +33,6 @@
+ template <class T, void* Alloc(size_t, size_t), void Free(void*)>
+ struct FxPartitionAllocAllocator {
+  public:
+-  static_assert(std::is_arithmetic<T>::value || std::is_enum<T>::value ||
+-                    IsFXDataPartitionException<T>::value,
+-                "Only numeric types allowed in this partition");
+ 
+   using value_type = T;
+   using pointer = T*;
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index 58232d8fbc65..975b3ae743f4 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -1414,7 +1414,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf154549)
 
     int nChars = pPdfTextPage->countChars();
 
-    CPPUNIT_ASSERT_EQUAL(1, nChars);
+    CPPUNIT_ASSERT_EQUAL(3, nChars);
 
     std::vector<sal_uInt32> aChars(nChars);
     for (int i = 0; i < nChars; i++)
@@ -1424,7 +1424,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest, testTdf154549)
     // Without the fix in place, this test would have failed with
     // - Expected: ִبي
     // - Actual  : بִي
-    CPPUNIT_ASSERT_EQUAL(u"\u064a"_ustr, aActualText);
+    CPPUNIT_ASSERT_EQUAL(u"\u05B4\u0628\u064A"_ustr, aActualText);
 #endif
 }
 
diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx 
b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
index fa07b33e549b..875721c87234 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx
@@ -5217,17 +5217,17 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf71956)
     CPPUNIT_ASSERT_EQUAL(12, nTextObjectCount);
 
     CPPUNIT_ASSERT_EQUAL(u"ه"_ustr, aText[0].trim());
-    CPPUNIT_ASSERT_EQUAL(u"\u0670\u0020\u0644\u0644"_ustr, aText[1].trim());
+    CPPUNIT_ASSERT_EQUAL(u"\u064e\u0651\u0670ل"_ustr, aText[1].trim());
     CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[2].trim());
     CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[3].trim());
     CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[4].trim());
     CPPUNIT_ASSERT_EQUAL(u"ل"_ustr, aText[5].trim());
-    CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[6].trim());
-    CPPUNIT_ASSERT_EQUAL(u"\u0647"_ustr, aText[7].trim());
+    CPPUNIT_ASSERT_EQUAL(u"ل"_ustr, aText[6].trim());
+    CPPUNIT_ASSERT_EQUAL(u"\u064e\u0651\u0670ل"_ustr, aText[7].trim());
     CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[8].trim());
     CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[9].trim());
     CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[10].trim());
-    CPPUNIT_ASSERT_EQUAL(u""_ustr, aText[11].trim());
+    CPPUNIT_ASSERT_EQUAL(u"ه"_ustr, aText[11].trim());
 
     // Verify that the corresponding text segments are positioned roughly 
equally
     auto fnEqualPos
commit 6f415526e36340a182bca7de85e16b325edf371d
Author:     Miklos Vajna <[email protected]>
AuthorDate: Wed Dec 11 11:11:05 2024 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:35:28 2026 +0100

    Update pdfium to 6887
    
    CPWL_Dash-switch-to-universal-init.patch.1 is upstreamed, remove it.
    
    (cherry picked from commit 39f35f2ed2277931da36b6e3d2516c2355296fc9)
    
    Conflicts:
            external/pdfium/UnpackedTarball_pdfium.mk
    
    Change-Id: I4ff68f15d58b853896626b0458d3817f64fbc32f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182907
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Miklos Vajna <[email protected]>

diff --git a/download.lst b/download.lst
index 5b066e626fd9..4c20f36c48a5 100644
--- a/download.lst
+++ b/download.lst
@@ -558,8 +558,8 @@ PAGEMAKER_TARBALL := libpagemaker-0.0.4.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-PDFIUM_SHA256SUM := 
59d5df3b38312b069d96a8de9d4f8d7f44a29835c9dc82bd792ea02be86c4e49
-PDFIUM_TARBALL := pdfium-6764.tar.bz2
+PDFIUM_SHA256SUM := 
03aabafd8bed319f87aa96871264dc599879e482a0923450070dac987c8a671e
+PDFIUM_TARBALL := pdfium-6887.tar.bz2
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/pdfium/CPWL_Dash-switch-to-universal-init.patch.1 
b/external/pdfium/CPWL_Dash-switch-to-universal-init.patch.1
deleted file mode 100644
index 9a82052c5013..000000000000
--- a/external/pdfium/CPWL_Dash-switch-to-universal-init.patch.1
+++ /dev/null
@@ -1,150 +0,0 @@
-From 4467963f67102181c41a1579e627a9748b954d74 Mon Sep 17 00:00:00 2001
-From: Miklos Vajna <[email protected]>
-Date: Fri, 18 Oct 2024 22:08:25 +0000
-Subject: [PATCH] CPWL_Dash: switch to universal init
-
-E.g. clang-15 in -std=c++20 mode fails without this with the following
-error message:
-
-pdfium/fpdfsdk/pwl/cpwl_wnd.cpp:43:7: error: no matching constructor for 
initialization of 'CPWL_Dash'
-      sDash(3, 0, 0) {}
-      ^     ~~~~~~~
-pdfium/fpdfsdk/pwl/cpwl_wnd.h:61:8: note: candidate constructor (the implicit 
copy constructor) not viable: requires 1 argument, but 3 were provided
-struct CPWL_Dash {
-       ^
-pdfium/fpdfsdk/pwl/cpwl_wnd.h:61:8: note: candidate constructor (the implicit 
move constructor) not viable: requires 1 argument, but 3 were provided
-pdfium/fpdfsdk/pwl/cpwl_wnd.h:61:8: note: candidate constructor (the implicit 
default constructor) not viable: requires 0 arguments, but 3 were provided
-1 error generated.
-
-Switching to universal init restores the ability to build with this
-compiler, as it was working in the past.
-
-Change-Id: I48b2079b87cce9bc4e2ec7b813e21ea5bcb786d3
-Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/125170
-Reviewed-by: Tom Sepez <[email protected]>
-Commit-Queue: Tom Sepez <[email protected]>
-Reviewed-by: Lei Zhang <[email protected]>
-Reviewed-by: Tom Sepez <[email protected]>
----
- fpdfsdk/cpdfsdk_appstream.cpp         | 20 ++++++++++----------
- fpdfsdk/formfiller/cffl_formfield.cpp |  2 +-
- fpdfsdk/pwl/cpwl_wnd.cpp              |  2 +-
- 3 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
-index 3a9bfabef..b7b06cae8 100644
---- a/fpdfsdk/cpdfsdk_appstream.cpp
-+++ b/fpdfsdk/cpdfsdk_appstream.cpp
-@@ -1055,7 +1055,7 @@ ByteString GetDropButtonAppStream(const CFX_FloatRect& 
rcBBox) {
-         rcBBox, 2, CFX_Color(CFX_Color::Type::kGray, 0),
-         CFX_Color(CFX_Color::Type::kGray, 1),
-         CFX_Color(CFX_Color::Type::kGray, 0.5), BorderStyle::kBeveled,
--        CPWL_Dash(3, 0, 0));
-+        CPWL_Dash{3, 0, 0});
-   }
- 
-   CFX_PointF ptCenter = CFX_PointF((rcBBox.left + rcBBox.right) / 2,
-@@ -1162,14 +1162,14 @@ void CPDFSDK_AppStream::SetAsPushButton() {
-   CFX_Color crBorder = pControl->GetOriginalBorderColor();
- 
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
-   CFX_Color crLeftTop;
-   CFX_Color crRightBottom;
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-@@ -1313,14 +1313,14 @@ void CPDFSDK_AppStream::SetAsCheckBox() {
-   CFX_Color crBackground = pControl->GetOriginalBackgroundColor();
-   CFX_Color crBorder = pControl->GetOriginalBorderColor();
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
-   CFX_Color crLeftTop;
-   CFX_Color crRightBottom;
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-@@ -1392,14 +1392,14 @@ void CPDFSDK_AppStream::SetAsRadioButton() {
-   CFX_Color crBackground = pControl->GetOriginalBackgroundColor();
-   CFX_Color crBorder = pControl->GetOriginalBorderColor();
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
-   CFX_Color crLeftTop;
-   CFX_Color crRightBottom;
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-@@ -1769,7 +1769,7 @@ void 
CPDFSDK_AppStream::SetAsTextField(std::optional<WideString> sValue) {
-         ByteString sColor =
-             GetStrokeColorAppStream(widget_->GetBorderPWLColor());
-         if (sColor.GetLength() > 0) {
--          CPWL_Dash dsBorder = CPWL_Dash(3, 3, 0);
-+          CPWL_Dash dsBorder = CPWL_Dash{3, 3, 0};
-           AutoClosedQCommand q(&sLines);
-           sLines << widget_->GetBorderWidth() << " " << kSetLineWidthOperator
-                  << "
"
-@@ -1876,12 +1876,12 @@ ByteString CPDFSDK_AppStream::GetBorderAppStream() 
const {
-   CFX_Color crRightBottom;
- 
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-diff --git a/fpdfsdk/formfiller/cffl_formfield.cpp 
b/fpdfsdk/formfiller/cffl_formfield.cpp
-index 49edfdaed..bba78eda6 100644
---- a/fpdfsdk/formfiller/cffl_formfield.cpp
-+++ b/fpdfsdk/formfiller/cffl_formfield.cpp
-@@ -336,7 +336,7 @@ CPWL_Wnd::CreateParams CFFL_FormField::GetCreateParam() {
-   cp.nBorderStyle = m_pWidget->GetBorderStyle();
-   switch (cp.nBorderStyle) {
-     case BorderStyle::kDash:
--      cp.sDash = CPWL_Dash(3, 3, 0);
-+      cp.sDash = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-     case BorderStyle::kInset:
-diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
-index 502568709..88b0cf03e 100644
---- a/fpdfsdk/pwl/cpwl_wnd.cpp
-+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
-@@ -40,7 +40,7 @@ 
CPWL_Wnd::CreateParams::CreateParams(CFX_Timer::HandlerIface* timer_handler,
-       pFillerNotify(filler_notify),
-       pProvider(provider),
-       fFontSize(kDefaultFontSize),
--      sDash(3, 0, 0) {}
-+      sDash{3, 0, 0} {}
- 
- CPWL_Wnd::CreateParams::CreateParams(const CreateParams& other) = default;
- 
--- 
-2.43.0
-
diff --git a/external/pdfium/Library_pdfium.mk 
b/external/pdfium/Library_pdfium.mk
index 0f88cb6b3abc..326575ac46c2 100644
--- a/external/pdfium/Library_pdfium.mk
+++ b/external/pdfium/Library_pdfium.mk
@@ -379,10 +379,13 @@ $(eval $(call 
gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fxcodec/flate/flatemodule \
     UnpackedTarball/pdfium/core/fxcodec/icc/icc_transform \
     UnpackedTarball/pdfium/core/fxcodec/jbig2/jbig2_decoder \
-    UnpackedTarball/pdfium/core/fxcodec/jpeg/jpeg_common \
     UnpackedTarball/pdfium/core/fxcodec/data_and_bytes_consumed \
 ))
 
+$(eval $(call gb_Library_add_generated_cobjects,pdfium,\
+    UnpackedTarball/pdfium/core/fxcodec/jpeg/jpeg_common \
+))
+
 # fxcrt
 $(eval $(call gb_Library_add_generated_exception_objects,pdfium,\
     UnpackedTarball/pdfium/core/fxcrt/cfx_memorystream \
diff --git a/external/pdfium/UnpackedTarball_pdfium.mk 
b/external/pdfium/UnpackedTarball_pdfium.mk
index 4137fff52a72..6c5bce9b2e29 100644
--- a/external/pdfium/UnpackedTarball_pdfium.mk
+++ b/external/pdfium/UnpackedTarball_pdfium.mk
@@ -12,8 +12,6 @@ pdfium_patches :=
 pdfium_patches += build.patch.1
 # Avoids Windows 8 build dependency.
 pdfium_patches += windows7.patch.1
-# https://pdfium-review.googlesource.com/c/pdfium/+/125170
-pdfium_patches += CPWL_Dash-switch-to-universal-init.patch.1
 pdfium_patches += c++20-comparison.patch
 
 pdfium_patches += constexpr-template.patch
diff --git a/external/pdfium/inc/pch/precompiled_pdfium.hxx 
b/external/pdfium/inc/pch/precompiled_pdfium.hxx
index b03d216545af..be581129aa12 100644
--- a/external/pdfium/inc/pch/precompiled_pdfium.hxx
+++ b/external/pdfium/inc/pch/precompiled_pdfium.hxx
@@ -51,7 +51,6 @@
 #include <ostream>
 #include <queue>
 #include <set>
-#include <setjmp.h>
 #include <sstream>
 #include <stack>
 #include <stddef.h>
commit 99a8a860f7b6e421a622325ae380d6ea690d55a6
Author:     Miklos Vajna <[email protected]>
AuthorDate: Tue Dec 10 15:23:17 2024 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:35:28 2026 +0100

    pdfium: mark part of build.patch.1 as upstreamed
    
    So it'll be easier to drop it the next time pdfium is updated.
    
    (cherry picked from commit 904b956622b1581517c938ed8dacac70f7c6242c)
    
     Conflicts:
            external/pdfium/UnpackedTarball_pdfium.mk
    
    Change-Id: Iebeb892f62ee8002460142adf28f75666c92c2e4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/182866
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/pdfium/CPWL_Dash-switch-to-universal-init.patch.1 
b/external/pdfium/CPWL_Dash-switch-to-universal-init.patch.1
new file mode 100644
index 000000000000..9a82052c5013
--- /dev/null
+++ b/external/pdfium/CPWL_Dash-switch-to-universal-init.patch.1
@@ -0,0 +1,150 @@
+From 4467963f67102181c41a1579e627a9748b954d74 Mon Sep 17 00:00:00 2001
+From: Miklos Vajna <[email protected]>
+Date: Fri, 18 Oct 2024 22:08:25 +0000
+Subject: [PATCH] CPWL_Dash: switch to universal init
+
+E.g. clang-15 in -std=c++20 mode fails without this with the following
+error message:
+
+pdfium/fpdfsdk/pwl/cpwl_wnd.cpp:43:7: error: no matching constructor for 
initialization of 'CPWL_Dash'
+      sDash(3, 0, 0) {}
+      ^     ~~~~~~~
+pdfium/fpdfsdk/pwl/cpwl_wnd.h:61:8: note: candidate constructor (the implicit 
copy constructor) not viable: requires 1 argument, but 3 were provided
+struct CPWL_Dash {
+       ^
+pdfium/fpdfsdk/pwl/cpwl_wnd.h:61:8: note: candidate constructor (the implicit 
move constructor) not viable: requires 1 argument, but 3 were provided
+pdfium/fpdfsdk/pwl/cpwl_wnd.h:61:8: note: candidate constructor (the implicit 
default constructor) not viable: requires 0 arguments, but 3 were provided
+1 error generated.
+
+Switching to universal init restores the ability to build with this
+compiler, as it was working in the past.
+
+Change-Id: I48b2079b87cce9bc4e2ec7b813e21ea5bcb786d3
+Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/125170
+Reviewed-by: Tom Sepez <[email protected]>
+Commit-Queue: Tom Sepez <[email protected]>
+Reviewed-by: Lei Zhang <[email protected]>
+Reviewed-by: Tom Sepez <[email protected]>
+---
+ fpdfsdk/cpdfsdk_appstream.cpp         | 20 ++++++++++----------
+ fpdfsdk/formfiller/cffl_formfield.cpp |  2 +-
+ fpdfsdk/pwl/cpwl_wnd.cpp              |  2 +-
+ 3 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
+index 3a9bfabef..b7b06cae8 100644
+--- a/fpdfsdk/cpdfsdk_appstream.cpp
++++ b/fpdfsdk/cpdfsdk_appstream.cpp
+@@ -1055,7 +1055,7 @@ ByteString GetDropButtonAppStream(const CFX_FloatRect& 
rcBBox) {
+         rcBBox, 2, CFX_Color(CFX_Color::Type::kGray, 0),
+         CFX_Color(CFX_Color::Type::kGray, 1),
+         CFX_Color(CFX_Color::Type::kGray, 0.5), BorderStyle::kBeveled,
+-        CPWL_Dash(3, 0, 0));
++        CPWL_Dash{3, 0, 0});
+   }
+ 
+   CFX_PointF ptCenter = CFX_PointF((rcBBox.left + rcBBox.right) / 2,
+@@ -1162,14 +1162,14 @@ void CPDFSDK_AppStream::SetAsPushButton() {
+   CFX_Color crBorder = pControl->GetOriginalBorderColor();
+ 
+   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
+-  CPWL_Dash dsBorder(3, 0, 0);
++  CPWL_Dash dsBorder{3, 0, 0};
+   CFX_Color crLeftTop;
+   CFX_Color crRightBottom;
+ 
+   BorderStyle nBorderStyle = widget_->GetBorderStyle();
+   switch (nBorderStyle) {
+     case BorderStyle::kDash:
+-      dsBorder = CPWL_Dash(3, 3, 0);
++      dsBorder = CPWL_Dash{3, 3, 0};
+       break;
+     case BorderStyle::kBeveled:
+       fBorderWidth *= 2;
+@@ -1313,14 +1313,14 @@ void CPDFSDK_AppStream::SetAsCheckBox() {
+   CFX_Color crBackground = pControl->GetOriginalBackgroundColor();
+   CFX_Color crBorder = pControl->GetOriginalBorderColor();
+   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
+-  CPWL_Dash dsBorder(3, 0, 0);
++  CPWL_Dash dsBorder{3, 0, 0};
+   CFX_Color crLeftTop;
+   CFX_Color crRightBottom;
+ 
+   BorderStyle nBorderStyle = widget_->GetBorderStyle();
+   switch (nBorderStyle) {
+     case BorderStyle::kDash:
+-      dsBorder = CPWL_Dash(3, 3, 0);
++      dsBorder = CPWL_Dash{3, 3, 0};
+       break;
+     case BorderStyle::kBeveled:
+       fBorderWidth *= 2;
+@@ -1392,14 +1392,14 @@ void CPDFSDK_AppStream::SetAsRadioButton() {
+   CFX_Color crBackground = pControl->GetOriginalBackgroundColor();
+   CFX_Color crBorder = pControl->GetOriginalBorderColor();
+   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
+-  CPWL_Dash dsBorder(3, 0, 0);
++  CPWL_Dash dsBorder{3, 0, 0};
+   CFX_Color crLeftTop;
+   CFX_Color crRightBottom;
+ 
+   BorderStyle nBorderStyle = widget_->GetBorderStyle();
+   switch (nBorderStyle) {
+     case BorderStyle::kDash:
+-      dsBorder = CPWL_Dash(3, 3, 0);
++      dsBorder = CPWL_Dash{3, 3, 0};
+       break;
+     case BorderStyle::kBeveled:
+       fBorderWidth *= 2;
+@@ -1769,7 +1769,7 @@ void 
CPDFSDK_AppStream::SetAsTextField(std::optional<WideString> sValue) {
+         ByteString sColor =
+             GetStrokeColorAppStream(widget_->GetBorderPWLColor());
+         if (sColor.GetLength() > 0) {
+-          CPWL_Dash dsBorder = CPWL_Dash(3, 3, 0);
++          CPWL_Dash dsBorder = CPWL_Dash{3, 3, 0};
+           AutoClosedQCommand q(&sLines);
+           sLines << widget_->GetBorderWidth() << " " << kSetLineWidthOperator
+                  << "
"
+@@ -1876,12 +1876,12 @@ ByteString CPDFSDK_AppStream::GetBorderAppStream() 
const {
+   CFX_Color crRightBottom;
+ 
+   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
+-  CPWL_Dash dsBorder(3, 0, 0);
++  CPWL_Dash dsBorder{3, 0, 0};
+ 
+   BorderStyle nBorderStyle = widget_->GetBorderStyle();
+   switch (nBorderStyle) {
+     case BorderStyle::kDash:
+-      dsBorder = CPWL_Dash(3, 3, 0);
++      dsBorder = CPWL_Dash{3, 3, 0};
+       break;
+     case BorderStyle::kBeveled:
+       fBorderWidth *= 2;
+diff --git a/fpdfsdk/formfiller/cffl_formfield.cpp 
b/fpdfsdk/formfiller/cffl_formfield.cpp
+index 49edfdaed..bba78eda6 100644
+--- a/fpdfsdk/formfiller/cffl_formfield.cpp
++++ b/fpdfsdk/formfiller/cffl_formfield.cpp
+@@ -336,7 +336,7 @@ CPWL_Wnd::CreateParams CFFL_FormField::GetCreateParam() {
+   cp.nBorderStyle = m_pWidget->GetBorderStyle();
+   switch (cp.nBorderStyle) {
+     case BorderStyle::kDash:
+-      cp.sDash = CPWL_Dash(3, 3, 0);
++      cp.sDash = CPWL_Dash{3, 3, 0};
+       break;
+     case BorderStyle::kBeveled:
+     case BorderStyle::kInset:
+diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
+index 502568709..88b0cf03e 100644
+--- a/fpdfsdk/pwl/cpwl_wnd.cpp
++++ b/fpdfsdk/pwl/cpwl_wnd.cpp
+@@ -40,7 +40,7 @@ 
CPWL_Wnd::CreateParams::CreateParams(CFX_Timer::HandlerIface* timer_handler,
+       pFillerNotify(filler_notify),
+       pProvider(provider),
+       fFontSize(kDefaultFontSize),
+-      sDash(3, 0, 0) {}
++      sDash{3, 0, 0} {}
+ 
+ CPWL_Wnd::CreateParams::CreateParams(const CreateParams& other) = default;
+ 
+-- 
+2.43.0
+
diff --git a/external/pdfium/UnpackedTarball_pdfium.mk 
b/external/pdfium/UnpackedTarball_pdfium.mk
index 6c5bce9b2e29..4137fff52a72 100644
--- a/external/pdfium/UnpackedTarball_pdfium.mk
+++ b/external/pdfium/UnpackedTarball_pdfium.mk
@@ -12,6 +12,8 @@ pdfium_patches :=
 pdfium_patches += build.patch.1
 # Avoids Windows 8 build dependency.
 pdfium_patches += windows7.patch.1
+# https://pdfium-review.googlesource.com/c/pdfium/+/125170
+pdfium_patches += CPWL_Dash-switch-to-universal-init.patch.1
 pdfium_patches += c++20-comparison.patch
 
 pdfium_patches += constexpr-template.patch
diff --git a/external/pdfium/build.patch.1 b/external/pdfium/build.patch.1
index 80e136d096d1..6fe32f6b76ca 100644
--- a/external/pdfium/build.patch.1
+++ b/external/pdfium/build.patch.1
@@ -77,117 +77,3 @@ index 8026a75d5..34c20d62f 100644
    static_assert(kModeKeyForMode.size() == FPDF_ANNOT_APPEARANCEMODE_COUNT,
                  "length of kModeKeyForMode should be equal to "
                  "FPDF_ANNOT_APPEARANCEMODE_COUNT");
-diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
-index 3a9bfabef..b7b06cae8 100644
---- a/fpdfsdk/cpdfsdk_appstream.cpp
-+++ b/fpdfsdk/cpdfsdk_appstream.cpp
-@@ -1055,7 +1055,7 @@ ByteString GetDropButtonAppStream(const CFX_FloatRect& 
rcBBox) {
-         rcBBox, 2, CFX_Color(CFX_Color::Type::kGray, 0),
-         CFX_Color(CFX_Color::Type::kGray, 1),
-         CFX_Color(CFX_Color::Type::kGray, 0.5), BorderStyle::kBeveled,
--        CPWL_Dash(3, 0, 0));
-+        CPWL_Dash{3, 0, 0});
-   }
- 
-   CFX_PointF ptCenter = CFX_PointF((rcBBox.left + rcBBox.right) / 2,
-@@ -1162,14 +1162,14 @@ void CPDFSDK_AppStream::SetAsPushButton() {
-   CFX_Color crBorder = pControl->GetOriginalBorderColor();
- 
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
-   CFX_Color crLeftTop;
-   CFX_Color crRightBottom;
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-@@ -1313,14 +1313,14 @@ void CPDFSDK_AppStream::SetAsCheckBox() {
-   CFX_Color crBackground = pControl->GetOriginalBackgroundColor();
-   CFX_Color crBorder = pControl->GetOriginalBorderColor();
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
-   CFX_Color crLeftTop;
-   CFX_Color crRightBottom;
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-@@ -1392,14 +1392,14 @@ void CPDFSDK_AppStream::SetAsRadioButton() {
-   CFX_Color crBackground = pControl->GetOriginalBackgroundColor();
-   CFX_Color crBorder = pControl->GetOriginalBorderColor();
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
-   CFX_Color crLeftTop;
-   CFX_Color crRightBottom;
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-@@ -1769,7 +1769,7 @@ void 
CPDFSDK_AppStream::SetAsTextField(std::optional<WideString> sValue) {
-         ByteString sColor =
-             GetStrokeColorAppStream(widget_->GetBorderPWLColor());
-         if (sColor.GetLength() > 0) {
--          CPWL_Dash dsBorder = CPWL_Dash(3, 3, 0);
-+          CPWL_Dash dsBorder = CPWL_Dash{3, 3, 0};
-           AutoClosedQCommand q(&sLines);
-           sLines << widget_->GetBorderWidth() << " " << kSetLineWidthOperator
-                  << "
"
-@@ -1876,12 +1876,12 @@ ByteString CPDFSDK_AppStream::GetBorderAppStream() 
const {
-   CFX_Color crRightBottom;
- 
-   float fBorderWidth = static_cast<float>(widget_->GetBorderWidth());
--  CPWL_Dash dsBorder(3, 0, 0);
-+  CPWL_Dash dsBorder{3, 0, 0};
- 
-   BorderStyle nBorderStyle = widget_->GetBorderStyle();
-   switch (nBorderStyle) {
-     case BorderStyle::kDash:
--      dsBorder = CPWL_Dash(3, 3, 0);
-+      dsBorder = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-       fBorderWidth *= 2;
-diff --git a/fpdfsdk/formfiller/cffl_formfield.cpp 
b/fpdfsdk/formfiller/cffl_formfield.cpp
-index 49edfdaed..bba78eda6 100644
---- a/fpdfsdk/formfiller/cffl_formfield.cpp
-+++ b/fpdfsdk/formfiller/cffl_formfield.cpp
-@@ -336,7 +336,7 @@ CPWL_Wnd::CreateParams CFFL_FormField::GetCreateParam() {
-   cp.nBorderStyle = m_pWidget->GetBorderStyle();
-   switch (cp.nBorderStyle) {
-     case BorderStyle::kDash:
--      cp.sDash = CPWL_Dash(3, 3, 0);
-+      cp.sDash = CPWL_Dash{3, 3, 0};
-       break;
-     case BorderStyle::kBeveled:
-     case BorderStyle::kInset:
-diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
-index 502568709..88b0cf03e 100644
---- a/fpdfsdk/pwl/cpwl_wnd.cpp
-+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
-@@ -40,7 +40,7 @@ 
CPWL_Wnd::CreateParams::CreateParams(CFX_Timer::HandlerIface* timer_handler,
-       pFillerNotify(filler_notify),
-       pProvider(provider),
-       fFontSize(kDefaultFontSize),
--      sDash(3, 0, 0) {}
-+      sDash{3, 0, 0} {}
- 
- CPWL_Wnd::CreateParams::CreateParams(const CreateParams& other) = default;
- 
commit 4500ef7bd658f88c54671bfc1db2fc5d64853f83
Author:     Xisco Fauli <[email protected]>
AuthorDate: Thu Jul 31 17:13:05 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.114
    
    Downloaded from 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_114_RTM/src/nss-3.114-with-nspr-4.37.tar.gz
    
    Change-Id: Id3c3d002790d92ca8f17c676ce447dae8c26e16b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188688
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 6cda2dbfbf5d855e6194cd530a6f66099279bd90)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193493
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 5bcd98e13793..5b066e626fd9 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
ae99a9a473f8117f542dfb33daa26a584db21776ef053b48cd24fa7b9d802dc7
-NSS_TARBALL := nss-3.113.1-with-nspr-4.36.tar.gz
+NSS_SHA256SUM := 
aa927a8610354483b52fdb3c9445f3e2f4a231cc03754ed47e96d2697c2e2329
+NSS_TARBALL := nss-3.114-with-nspr-4.37.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit dfc9be61bc0b5f83d6e3f8e4010f1953b6e5e1c2
Author:     Xisco Fauli <[email protected]>
AuthorDate: Wed Jul 2 09:59:50 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.113.1
    
    Downloaded from 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_113_1_RTM/src/nss-3.113.1-with-nspr-4.36.tar.gz
    
    Change-Id: Ib5aed4732e2e4b98d6a3514a25b63a5eb32d8bf1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187265
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 7ff0fd67cfe5514094249f2f5580ea38a8619357)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193492
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index cbdd467b1108..5bcd98e13793 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
b62d51d900b59502eea34be33e3089537fb73977ea6b76cea8d8e6a80e1d95df
-NSS_TARBALL := nss-3.113-with-nspr-4.36.tar.gz
+NSS_SHA256SUM := 
ae99a9a473f8117f542dfb33daa26a584db21776ef053b48cd24fa7b9d802dc7
+NSS_TARBALL := nss-3.113.1-with-nspr-4.36.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 5f8c37c473cc97474c7540222355fedada4a76c4
Author:     Xisco Fauli <[email protected]>
AuthorDate: Fri Jun 20 09:13:51 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.113
    
    Downloaded from 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_113_RTM/src/nss-3.113-with-nspr-4.36.tar.gz
    
    Change-Id: I9327a325fc2bdc1159c9dda1c8e54963b410e8e3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186735
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit d6efc1cd776393fc70a8dc0e2e1d6dc26df38035)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193491
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 66b1e56097c8..cbdd467b1108 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
a8ee2b4485c4d841b1f974a13037183071ac12520512e6ec6b7d38ff36e8a125
-NSS_TARBALL := nss-3.112-with-nspr-4.36.tar.gz
+NSS_SHA256SUM := 
b62d51d900b59502eea34be33e3089537fb73977ea6b76cea8d8e6a80e1d95df
+NSS_TARBALL := nss-3.113-with-nspr-4.36.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/nss/clang-cl.patch.0 b/external/nss/clang-cl.patch.0
index e20aab3b9ff1..dc5f8e0a884e 100644
--- a/external/nss/clang-cl.patch.0
+++ b/external/nss/clang-cl.patch.0
@@ -72,17 +72,6 @@
  /* make GCC warn when we use these #defines */
  typedef int __BLAPI_DEPRECATED __attribute__((deprecated));
  #define DSA_SUBPRIME_LEN ((__BLAPI_DEPRECATED)DSA1_SUBPRIME_LEN)
---- nss/lib/util/pkcs11n.h
-+++ nss/lib/util/pkcs11n.h
-@@ -563,7 +563,7 @@
- /* keep the old value for compatibility reasons*/
- #define CKT_NSS_MUST_VERIFY ((__CKT_NSS_MUST_VERIFY)(CKT_NSS + 4))
- #else
--#ifdef _WIN32
-+#if defined _WIN32 && !defined __clang__
- /* This magic gets the windows compiler to give us a deprecation
-  * warning */
- #pragma deprecated(CKT_NSS_UNTRUSTED, CKT_NSS_MUST_VERIFY, CKT_NSS_VALID)
 
 # While MSVC uses
 #  #pragma warning(disable : 4103)
commit 0e93e05d2b77eabfd79d76bdf8a0968873a6b0a1
Author:     Xisco Fauli <[email protected]>
AuthorDate: Tue May 27 18:25:02 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.112
    
    Downloaded 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_112_RTM/src/nss-3.112-with-nspr-4.36.tar.gz
    
    Change-Id: I755d5e89868870237ba3f7d04a9ec23e11fbba04
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185928
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 95b9691da797bc5bef17ce67dcfe69766ccf95ba)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193490
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 7cd36e100d5a..66b1e56097c8 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
672f0af6cc9b577bee4906e2071b250d940b23e29ce516a721dc9561c421bbce
-NSS_TARBALL := nss-3.111-with-nspr-4.36.tar.gz
+NSS_SHA256SUM := 
a8ee2b4485c4d841b1f974a13037183071ac12520512e6ec6b7d38ff36e8a125
+NSS_TARBALL := nss-3.112-with-nspr-4.36.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit 3efeb7f777c0a3f8fc5c13dc174dea82c8ae52c2
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon May 5 12:18:01 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.111
    
    Downloaded 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_111_RTM/src/nss-3.111-with-nspr-4.36.tar.gz
    
    Change-Id: If08f3f13f590a8e17a64f97990a4aced9900dd62
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184959
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit fe2af71719fa335ad232902451ffb8e6e666c7f7)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193489
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/download.lst b/download.lst
index 9db66ca7bac8..7cd36e100d5a 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
96114bef9e9692dda6e7793da26fedef0dc0449c3644ebe1122464e599a39dc0
-NSS_TARBALL := nss-3.110-with-nspr-4.36.tar.gz
+NSS_SHA256SUM := 
672f0af6cc9b577bee4906e2071b250d940b23e29ce516a721dc9561c421bbce
+NSS_TARBALL := nss-3.111-with-nspr-4.36.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit d2a9b793bb0a9ae5d81ebbcea01a73b6218734b7
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Mar 31 10:18:11 2025 +0200
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.110
    
    Downloaded from 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_110_RTM/src/nss-3.110-with-nspr-4.36.tar.gz
    
    Change-Id: I4301e093661bbac3aae9f59d7ae366a0b2e2ef9b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183526
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit 969d6815b802893b5dd765afc17ad230af0fe456)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193488
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/download.lst b/download.lst
index 6bf566fb69a3..9db66ca7bac8 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
25be414ff9c207dd67355f19e9e71001db45957b6bb74adf5b094c92e05116b4
-NSS_TARBALL := nss-3.109-with-nspr-4.36.tar.gz
+NSS_SHA256SUM := 
96114bef9e9692dda6e7793da26fedef0dc0449c3644ebe1122464e599a39dc0
+NSS_TARBALL := nss-3.110-with-nspr-4.36.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
commit ce21a28b599bd947604d41a50e82c4a336ac3e23
Author:     Xisco Fauli <[email protected]>
AuthorDate: Mon Feb 17 12:06:37 2025 +0100
Commit:     Andras Timar <[email protected]>
CommitDate: Fri Jan 30 10:33:45 2026 +0100

    nss: upgrade to 3.109
    
    Downloaded from 
https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_109_RTM/src/nss-3.109-with-nspr-4.36.tar.gz
    
    Change-Id: I2210c384f629ccc9a671c2bb3260b822a302dd1d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181773
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>
    (cherry picked from commit e39a1baeb4441e1736022a7fd07668bd5db2cb6e)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193487
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Michael Stahl <[email protected]>

diff --git a/download.lst b/download.lst
index 94ea135cae0a..6bf566fb69a3 100644
--- a/download.lst
+++ b/download.lst
@@ -512,8 +512,8 @@ MYTHES_TARBALL := mythes-1.2.5.tar.xz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
-NSS_SHA256SUM := 
0ea8bab27345e4e0fc0ec0587d01bb54ba7eb46cb5b369c9ed59ee42baa78fa9
-NSS_TARBALL := nss-3.104-with-nspr-4.35.tar.gz
+NSS_SHA256SUM := 
25be414ff9c207dd67355f19e9e71001db45957b6bb74adf5b094c92e05116b4
+NSS_TARBALL := nss-3.109-with-nspr-4.36.tar.gz
 # three static lines
 # so that git cherry-pick
 # will not run into conflicts
diff --git a/external/nss/Wincompatible-function-pointer-types.patch.0 
b/external/nss/Wincompatible-function-pointer-types.patch.0
index 1e9b7550e1da..dde8c21348cf 100644
--- a/external/nss/Wincompatible-function-pointer-types.patch.0
+++ b/external/nss/Wincompatible-function-pointer-types.patch.0
@@ -1,234 +1,215 @@
 --- nspr/pr/tests/testfile.c
 +++ nspr/pr/tests/testfile.c
-@@ -86,7 +86,7 @@
+@@ -72,7 +72,7 @@
  #endif
- #define TMPDIR_LEN  64
+ #define TMPDIR_LEN 64
  char testdir[TMPDIR_LEN];
--static PRInt32 PR_CALLBACK DirTest(void *argunused);
-+static void PR_CALLBACK DirTest(void *argunused);
+-static PRInt32 PR_CALLBACK DirTest(void* argunused);
++static void PR_CALLBACK DirTest(void* argunused);
  PRInt32 dirtest_failed = 0;
  
- PRThread* create_new_thread(PRThreadType type,
-@@ -123,7 +123,7 @@
-     if (native_thread) {
  #if defined(_PR_PTHREADS)
-         pthread_t tid;
--        if (!pthread_create(&tid, NULL, start, arg)) {
-+        if (!pthread_create(&tid, NULL, (void *(*)(void *))start, arg)) {
-             return((PRThread *) tid);
-         }
-         else {
-@@ -594,7 +594,7 @@
-     return 0;
+@@ -134,7 +134,7 @@
+   if (native_thread) {
+ #  if defined(_PR_PTHREADS)
+     pthread_t tid;
+-    if (!pthread_create(&tid, NULL, nativeStart, arg)) {
++    if (!pthread_create(&tid, NULL, (void *(*)(void *))nativeStart, arg)) {
+       return ((PRThread*)tid);
+     } else {
+       return (NULL);
+@@ -595,7 +595,7 @@
+   return 0;
  }
  
--static PRInt32 PR_CALLBACK DirTest(void *arg)
-+static void PR_CALLBACK DirTest(void *arg)
- {
-     struct dirtest_arg *tinfo = (struct dirtest_arg *) arg;
-     PRFileDesc *fd_file;
-@@ -618,14 +618,14 @@
-         printf(
-             "testfile failed to create dir %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
-     fd_dir = PR_OpenDir(TEST_DIR);
-     if (fd_dir == NULL) {
-         printf(
-             "testfile failed to open dirctory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     strcpy(pathname, TEST_DIR);
-@@ -645,7 +645,7 @@
-             printf(
-                 "testfile failed to create/open file %s [%d, %d]
",
-                 pathname, PR_GetError(), PR_GetOSError());
--            return -1;
-+            return;
-         }
-         PR_Close(fd_file);
-     }
-@@ -664,7 +664,7 @@
-         printf(
-             "testfile failed to create/open hidden file %s [%d, %d]
",
-             pathname, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     PR_Close(fd_file);
-@@ -681,7 +681,7 @@
-     if (hfile == INVALID_HANDLE_VALUE) {
-         printf("testfile failed to create/open hidden file %s [0, %d]
",
-                pathname, GetLastError());
--        return -1;
-+        return;
-     }
-     CloseHandle(hfile);
- 
-@@ -696,7 +696,7 @@
-     if (hfile == INVALID_HANDLE_VALUE) {
-         printf("testfile failed to create/open hidden file %s [0, %d]
",
-                pathname, GetLastError());
--        return -1;
-+        return;
-     }
-     CloseHandle(hfile);
- 
-@@ -707,7 +707,7 @@
+-static PRInt32 PR_CALLBACK DirTest(void* arg) {
++static void PR_CALLBACK DirTest(void* arg) {
+   struct dirtest_arg* tinfo = (struct dirtest_arg*)arg;
+   PRFileDesc* fd_file;
+   PRDir* fd_dir;
+@@ -617,13 +617,13 @@
+   if ((PR_MkDir(TEST_DIR, 0777)) < 0) {
+     printf("testfile failed to create dir %s [%d, %d]
", TEST_DIR,
+            PR_GetError(), PR_GetOSError());
+-    return -1;
++    return;
+   }
+   fd_dir = PR_OpenDir(TEST_DIR);
+   if (fd_dir == NULL) {
+     printf("testfile failed to open dirctory %s [%d, %d]
", TEST_DIR,
+            PR_GetError(), PR_GetOSError());
+-    return -1;
++    return;
+   }
+ 
+   strcpy(pathname, TEST_DIR);
+@@ -641,7 +641,7 @@
      if (fd_file == NULL) {
-         printf("testfile failed to create/open hidden file %s [%d, %d]
",
-                pathname, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
+       printf("testfile failed to create/open file %s [%d, %d]
", pathname,
+              PR_GetError(), PR_GetOSError());
+-      return -1;
++      return;
      }
      PR_Close(fd_file);
- #endif  /* XP_UNIX */
-@@ -720,14 +720,14 @@
-         printf(
-             "testfile failed to close dirctory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
-     fd_dir = PR_OpenDir(TEST_DIR);
-     if (fd_dir == NULL) {
-         printf(
-             "testfile failed to reopen dirctory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     /*
-@@ -750,14 +750,14 @@
-             printf(
-                 "testfile failed to GetFileInfo file %s [%d, %d]
",
-                 pathname, PR_GetError(), PR_GetOSError());
--            return -1;
-+            return;
-         }
- 
-         if (info.type != PR_FILE_FILE) {
-             printf(
-                 "testfile incorrect fileinfo for file %s [%d, %d]
",
-                 pathname, PR_GetError(), PR_GetOSError());
--            return -1;
-+            return;
-         }
-     }
-     if (num_files != 0)
-@@ -765,7 +765,7 @@
-         printf(
-             "testfile failed to find all files in directory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     PR_CloseDir(fd_dir);
-@@ -781,7 +781,7 @@
-         printf(
-             "testfile failed to reopen dirctory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     DPRINTF(("Listing non-hidden files in directory %s
",TEST_DIR));
-@@ -789,7 +789,7 @@
-         DPRINTF(("    %s
",dirEntry->name));
-         if (!strcmp(HIDDEN_FILE_NAME, dirEntry->name)) {
-             printf("testfile found hidden file %s
", pathname);
--            return -1;
-+            return;
-         }
- 
-     }
-@@ -803,7 +803,7 @@
-         printf(
-             "testfile failed to delete hidden file %s [%d, %d]
",
-             pathname, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     PR_CloseDir(fd_dir);
-@@ -815,41 +815,41 @@
-         printf(
-             "testfile failed to rename directory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     if (PR_FAILURE == PR_MkDir(TEST_DIR, 0777)) {
-         printf(
-             "testfile failed to recreate dir %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
-     if (PR_SUCCESS == PR_Rename(renamename, TEST_DIR)) {
-         printf(
-             "testfile renamed directory to existing name %s
",
-             renamename);
--        return -1;
-+        return;
-     }
- 
-     if (PR_FAILURE == PR_RmDir(TEST_DIR)) {
-         printf(
-             "testfile failed to rmdir %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     if (PR_FAILURE == PR_Rename(renamename, TEST_DIR)) {
-         printf(
-             "testfile failed to rename directory %s [%d, %d]
",
-             renamename, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
-     fd_dir = PR_OpenDir(TEST_DIR);
-     if (fd_dir == NULL) {
-         printf(
-             "testfile failed to reopen directory %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
- 
-     strcpy(pathname, TEST_DIR);
-@@ -865,7 +865,7 @@
-             printf(
-                 "testfile failed to delete file %s [%d, %d]
",
-                 pathname, PR_GetError(), PR_GetOSError());
--            return -1;
-+            return;
-         }
-     }
- 
-@@ -875,14 +875,13 @@
-         printf(
-             "testfile failed to rmdir %s [%d, %d]
",
-             TEST_DIR, PR_GetError(), PR_GetOSError());
--        return -1;
-+        return;
-     }
-     PR_EnterMonitor(tinfo->mon);
-e 
... etc. - the rest is truncated

Reply via email to