external/cairo/UnpackedTarball_cairo.mk                                        
|    4 +
 external/cairo/cairo/0001-Fix-out-of-memory-when-using-linear-gradient.patch.1 
|   29 ++++++++++
 2 files changed, 33 insertions(+)

New commits:
commit acf4f0ccd21069d33e8a049f368d9dc741306baf
Author:     Caolán McNamara <[email protected]>
AuthorDate: Tue Nov 25 17:36:56 2025 +0000
Commit:     Caolán McNamara <[email protected]>
CommitDate: Thu Nov 27 12:24:39 2025 +0100

    backport cairo's fix out of memory when using linear gradient
    
    of: 
https://gitlab.freedesktop.org/cairo/cairo/-/commit/d517773ff145d06c5b9efb21841fbc95caf5f540
    
    Change Id: Ia168eb3ac9e4aa7306224a0d53ed4406f16aa021
    
    Change-Id: Ic4ffc24bb225cc4b0d44ae8496a74f4d52220170
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194526
    Code-Style: Caolán McNamara <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Armin Le Grand <[email protected]>
    Tested-by: Armin Le Grand <[email protected]>
    (cherry picked from commit df9b9431c3abf7a458e8aa7bd36ce7c71cb0f9d6)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/194683
    Reviewed-by: Caolán McNamara <[email protected]>
    Tested-by: Caolán McNamara <[email protected]>

diff --git a/external/cairo/UnpackedTarball_cairo.mk 
b/external/cairo/UnpackedTarball_cairo.mk
index bd6b2760c424..76c1b8115c57 100644
--- a/external/cairo/UnpackedTarball_cairo.mk
+++ b/external/cairo/UnpackedTarball_cairo.mk
@@ -18,6 +18,9 @@ $(eval $(call 
gb_UnpackedTarball_set_tarball,cairo,$(CAIRO_TARBALL),,cairo))
 # ofz50805.patch 
https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/350
 # ofz46165.patch upstreamed as 
https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/351
 # san.patch upstreamed as 
https://gitlab.freedesktop.org/cairo/cairo/-/merge_requests/352
+#
+# 
external/cairo/cairo/0001-Fix-out-of-memory-when-using-linear-gradient.patch.1 
is a backport
+# of: 
https://gitlab.freedesktop.org/cairo/cairo/-/commit/d517773ff145d06c5b9efb21841fbc95caf5f540
 
 $(eval $(call gb_UnpackedTarball_add_patches,cairo,\
        external/cairo/cairo/cairo.buildfix.patch \
@@ -31,6 +34,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cairo,\
        external/cairo/cairo/cairo-fd-hack.patch.0 \
        external/cairo/cairo/cairo.ofz57493-Timeout.patch.1 \
        external/cairo/cairo/Wincompatible-pointer-types.patch.0 \
+       
external/cairo/cairo/0001-Fix-out-of-memory-when-using-linear-gradient.patch.1 \
 ))
 
 ifneq ($(OS),MACOSX)
diff --git 
a/external/cairo/cairo/0001-Fix-out-of-memory-when-using-linear-gradient.patch.1
 
b/external/cairo/cairo/0001-Fix-out-of-memory-when-using-linear-gradient.patch.1
new file mode 100644
index 000000000000..3905e79a8e4a
--- /dev/null
+++ 
b/external/cairo/cairo/0001-Fix-out-of-memory-when-using-linear-gradient.patch.1
@@ -0,0 +1,29 @@
+From d517773ff145d06c5b9efb21841fbc95caf5f540 Mon Sep 17 00:00:00 2001
+From: Koichi Akabe <[email protected]>
+Date: Tue, 6 Feb 2024 22:18:06 +0900
+Subject: [PATCH] Fix "out of memory" when using linear gradient
+
+---
+ src/cairo-pattern.c         |  6 +++++
+ test/gradient-scale-crash.c | 49 +++++++++++++++++++++++++++++++++++++
+ test/meson.build            |  1 +
+ 3 files changed, 56 insertions(+)
+ create mode 100644 test/gradient-scale-crash.c
+
+diff --git a/src/cairo-pattern.c b/src/cairo-pattern.c
+index fcaaf46b8..742c51b2e 100644
+--- a/src/cairo-pattern.c
++++ b/src/cairo-pattern.c
+@@ -2801,6 +2801,12 @@ _cairo_gradient_pattern_fit_to_range (const 
cairo_gradient_pattern_t *gradient,
+       dim = MAX (dim, fabs (radial->cd1.center.y - radial->cd2.center.y));
+       dim = MAX (dim, fabs (radial->cd1.radius   - radial->cd2.radius));
+     }
++    dim = MAX (dim, fabs (gradient->base.matrix.xx));
++    dim = MAX (dim, fabs (gradient->base.matrix.xy));
++    dim = MAX (dim, fabs (gradient->base.matrix.x0));
++    dim = MAX (dim, fabs (gradient->base.matrix.yx));
++    dim = MAX (dim, fabs (gradient->base.matrix.yy));
++    dim = MAX (dim, fabs (gradient->base.matrix.y0));
+ 
+     if (unlikely (dim > max_value)) {
+       cairo_matrix_t scale;

Reply via email to