external/cairo/UnpackedTarball_cairo.mk                  |    1 
 external/cairo/cairo/Wincompatible-pointer-types.patch.0 |   29 +++++++++++++++
 2 files changed, 30 insertions(+)

New commits:
commit 92da485fcab224ba3e83275dafd7bf0357c904ab
Author:     Stephan Bergmann <[email protected]>
AuthorDate: Mon Sep 22 17:08:36 2025 +0200
Commit:     Michael Stahl <[email protected]>
CommitDate: Tue Sep 23 12:04:11 2025 +0200

    external/cairo: Silence some -Wincompatible-pointer-types
    
    ...as seen at least when doing an Emscripten build against emsdk 4.0.15 
(which
    uses a Clang with
    
<https://github.com/llvm/llvm-project/commit/b24769855d97697de08e2296a548c033f193caf4>
    "[Clang] [Sema] Make `-Wincompatible-pointer-types` an error by default
    (#157364)"),
    
    > cairo-image-source.c:89:33: error: incompatible pointer types passing 
'pixman_image_t **' (aka 'union pixman_image **') to parameter of type 'void 
**' [-Wincompatible-pointer-types]
    >    89 |         if (_cairo_atomic_ptr_cmpxchg 
(&__pixman_transparent_image,
    >       |                                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    > ./cairo-atomic-private.h:143:34: note: expanded from macro 
'_cairo_atomic_ptr_cmpxchg'
    >   143 |   _cairo_atomic_ptr_cmpxchg_impl(x, oldv, newv)
    >       |                                  ^
    > ./cairo-atomic-private.h:136:39: note: passing argument to parameter 'x' 
here
    >   136 | _cairo_atomic_ptr_cmpxchg_impl(void **x, void *oldv, void *newv)
    >       |                                       ^
    > cairo-image-source.c:121:33: error: incompatible pointer types passing 
'pixman_image_t **' (aka 'union pixman_image **') to parameter of type 'void 
**' [-Wincompatible-pointer-types]
    >   121 |         if (_cairo_atomic_ptr_cmpxchg (&__pixman_black_image,
    >       |                                        ^~~~~~~~~~~~~~~~~~~~~
    > ./cairo-atomic-private.h:143:34: note: expanded from macro 
'_cairo_atomic_ptr_cmpxchg'
    >   143 |   _cairo_atomic_ptr_cmpxchg_impl(x, oldv, newv)
    >       |                                  ^
    > ./cairo-atomic-private.h:136:39: note: passing argument to parameter 'x' 
here
    >   136 | _cairo_atomic_ptr_cmpxchg_impl(void **x, void *oldv, void *newv)
    >       |                                       ^
    > cairo-image-source.c:153:33: error: incompatible pointer types passing 
'pixman_image_t **' (aka 'union pixman_image **') to parameter of type 'void 
**' [-Wincompatible-pointer-types]
    >   153 |         if (_cairo_atomic_ptr_cmpxchg (&__pixman_white_image,
    >       |                                        ^~~~~~~~~~~~~~~~~~~~~
    > ./cairo-atomic-private.h:143:34: note: expanded from macro 
'_cairo_atomic_ptr_cmpxchg'
    >   143 |   _cairo_atomic_ptr_cmpxchg_impl(x, oldv, newv)
    >       |                                  ^
    > ./cairo-atomic-private.h:136:39: note: passing argument to parameter 'x' 
here
    >   136 | _cairo_atomic_ptr_cmpxchg_impl(void **x, void *oldv, void *newv)
    >       |                                       ^
    
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191368
    Reviewed-by: Stephan Bergmann <[email protected]>
    Tested-by: Jenkins
    (cherry picked from commit 4ad6309f5b7460a8e1c558d68a94c4515ec1b73f)
    Conflicts:
            external/cairo/UnpackedTarball_cairo.mk
    
    Change-Id: Ie7e6424350b60e61db2cc13c17fa14b1cc0e9944
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191369
    Reviewed-by: Michael Stahl <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/external/cairo/UnpackedTarball_cairo.mk 
b/external/cairo/UnpackedTarball_cairo.mk
index 1108b5810386..bd6b2760c424 100644
--- a/external/cairo/UnpackedTarball_cairo.mk
+++ b/external/cairo/UnpackedTarball_cairo.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cairo,\
        external/cairo/cairo/0025-libtool-pass-use-ld.patch \
        external/cairo/cairo/cairo-fd-hack.patch.0 \
        external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 \
+       external/cairo/cairo/Wincompatible-pointer-types.patch.0 \
 ))
 
 ifneq ($(OS),MACOSX)
diff --git a/external/cairo/cairo/Wincompatible-pointer-types.patch.0 
b/external/cairo/cairo/Wincompatible-pointer-types.patch.0
new file mode 100644
index 000000000000..8e5ce833220d
--- /dev/null
+++ b/external/cairo/cairo/Wincompatible-pointer-types.patch.0
@@ -0,0 +1,29 @@
+--- src/cairo-image-source.c
++++ src/cairo-image-source.c
+@@ -86,7 +86,7 @@
+       if (unlikely (image == NULL))
+           return NULL;
+ 
+-      if (_cairo_atomic_ptr_cmpxchg (&__pixman_transparent_image,
++      if (_cairo_atomic_ptr_cmpxchg ((void **) &__pixman_transparent_image,
+                                      NULL, image))
+       {
+           pixman_image_ref (image);
+@@ -118,7 +118,7 @@
+       if (unlikely (image == NULL))
+           return NULL;
+ 
+-      if (_cairo_atomic_ptr_cmpxchg (&__pixman_black_image,
++      if (_cairo_atomic_ptr_cmpxchg ((void **) &__pixman_black_image,
+                                      NULL, image))
+       {
+           pixman_image_ref (image);
+@@ -150,7 +150,7 @@
+       if (unlikely (image == NULL))
+           return NULL;
+ 
+-      if (_cairo_atomic_ptr_cmpxchg (&__pixman_white_image,
++      if (_cairo_atomic_ptr_cmpxchg ((void **) &__pixman_white_image,
+                                      NULL, image))
+       {
+           pixman_image_ref (image);

Reply via email to