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;
