GNU bug report logs -
#76922
[PATCH] gnu: cairo: Add patch to fix regression when writing PDFs with fonts
Previous Next
Reported by: Remco van 't Veer <remco <at> remworks.net>
Date: Mon, 10 Mar 2025 16:18:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Applied patch fixes out of memory errors when writing PDFs with fonts
in xournalpp and others. See also:
https://gitlab.freedesktop.org/cairo/cairo/-/issues/870
* gnu/local.mk: Register patch.
* gnu/packages/gtk.scm (cairo): Add patch.
* gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs: Add patch.
Change-Id: Id6475d0ddb27208486bf41e18de72d116da110fb
---
gnu/local.mk | 3 +-
gnu/packages/gtk.scm | 2 ++
...cairo-cff-dont-fail-if-no-local-subs.patch | 34 +++++++++++++++++++
3 files changed, 38 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 880af09168..f26c79b3e1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -48,7 +48,7 @@
# Copyright © 2021 Andrew Tropin <andrew <at> trop.in>
# Copyright © 2021 Simon Tournier <zimon.toutoune <at> gmail.com>
# Copyright © 2022 Daniel Meißner <daniel.meissner-i4k <at> ruhr-uni-bochum.de>
-# Copyright © 2022, 2024 Remco van 't Veer <remco <at> remworks.net>
+# Copyright © 2022, 2024, 2025 Remco van 't Veer <remco <at> remworks.net>
# Copyright © 2022, 2024 Artyom V. Poptsov <poptsov.artyom <at> gmail.com>
# Copyright © 2022, 2023 John Kehayias <john.kehayias <at> protonmail.com>
# Copyright © 2022 muradm <mail <at> muradm.net>
@@ -1069,6 +1069,7 @@ dist_patch_DATA = \
%D%/packages/patches/busybox-add-missing-sha-NI-guard.patch \
%D%/packages/patches/c2rust-ast-exporter-local-search.patch \
%D%/packages/patches/cadical-add-shared-library.patch \
+ %D%/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch \
%D%/packages/patches/calibre-no-updates-dialog.patch \
%D%/packages/patches/calibre-remove-test-sqlite.patch \
%D%/packages/patches/calibre-remove-test-unrar.patch \
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 846103ff9e..f2b3f19897 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -38,6 +38,7 @@
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke <at> gnu.org>
;;; Copyright © 2024 John Kehayias <john.kehayias <at> protonmail.com>
;;; Copyright © 2025 Florian Pelz <pelzflorian <at> pelzflorian.de>
+;;; Copyright © 2025 Remco van 't Veer <remco <at> remworks.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -178,6 +179,7 @@ (define cairo
(uri
(string-append "https://cairographics.org/releases/cairo-"
version ".tar.xz"))
+ (patches (search-patches "cairo-cff-dont-fail-if-no-local-subs.patch"))
(sha256
(base32 "0nnli5cghygbl9bvlbjls7nspnrrzx1y1pbd7p649s154js9nax6"))))
(build-system meson-build-system)
diff --git a/gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch b/gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch
new file mode 100644
index 0000000000..ed1056a0c8
--- /dev/null
+++ b/gnu/packages/patches/cairo-cff-dont-fail-if-no-local-subs.patch
@@ -0,0 +1,34 @@
+From f19e2fe080ddcfce93c8234a919fd882f3d63362 Mon Sep 17 00:00:00 2001
+From: Adrian Johnson <ajohnson <at> redneon.com>
+Date: Fri, 13 Sep 2024 06:28:39 +0930
+Subject: [PATCH] cff: Don't fail if no local subs
+
+Fixes: #870
+---
+ src/cairo-cff-subset.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/cairo-cff-subset.c b/src/cairo-cff-subset.c
+index 076cb2b0a..8a7de0065 100644
+--- a/src/cairo-cff-subset.c
++++ b/src/cairo-cff-subset.c
+@@ -952,9 +952,13 @@ cairo_cff_font_read_private_dict (cairo_cff_font_t *font,
+ decode_number (operand, nominal_width);
+
+ num_subs = _cairo_array_num_elements (local_sub_index);
+- *local_subs_used = _cairo_calloc_ab (num_subs, sizeof (cairo_bool_t));
+- if (unlikely (*local_subs_used == NULL))
+- return _cairo_error (CAIRO_STATUS_NO_MEMORY);
++ if (num_subs > 0) {
++ *local_subs_used = _cairo_calloc_ab (num_subs, sizeof (cairo_bool_t));
++ if (unlikely (*local_subs_used == NULL))
++ return _cairo_error (CAIRO_STATUS_NO_MEMORY);
++ } else {
++ *local_subs_used = NULL;
++ }
+
+ if (num_subs < 1240)
+ *local_sub_bias = 107;
+--
+GitLab
+
base-commit: d0510dcd824e1b3fda62a8841e792581d7b8de8d
--
2.48.1
This bug report was last modified 104 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.