commit: 264a16fbd112b371972024a7fd6769518b6e1e96 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Mon Jun 9 15:34:31 2025 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Mon Jun 9 15:37:23 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=264a16fb
media-gfx/inkscape: Fix build w/ >=app-text/poppler-25.06.0 Closes: https://bugs.gentoo.org/957137 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> .../files/inkscape-1.4-poppler-25.06.0.patch | 123 +++++++++++++++++++++ media-gfx/inkscape/inkscape-1.4-r2.ebuild | 1 + 2 files changed, 124 insertions(+) diff --git a/media-gfx/inkscape/files/inkscape-1.4-poppler-25.06.0.patch b/media-gfx/inkscape/files/inkscape-1.4-poppler-25.06.0.patch new file mode 100644 index 000000000000..3f4b4ee49da9 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4-poppler-25.06.0.patch @@ -0,0 +1,123 @@ +From https://gitlab.com/inkscape/inkscape/-/merge_requests/7264 + +From 97bd8f29a61e691ceea98ca2444b974cf4256ae0 Mon Sep 17 00:00:00 2001 +From: Rafael Siejakowski <[email protected]> +Date: Sun, 8 Jun 2025 21:30:44 +0200 +Subject: [PATCH] Fix build against Poppler 25.06 + +Accommodate for the private API change, whereby an array of pointers +has been replaced with a vector of unique_ptr. + +Backported from MR 7261 +https://gitlab.com/inkscape/inkscape/-/merge_requests/7261 + +Fixes https://gitlab.com/inkscape/inkscape/-/issues/5836 +--- + .../internal/pdfinput/pdf-parser.cpp | 23 +++++++++++-------- + .../pdfinput/poppler-transition-api.h | 12 ++++++++++ + 2 files changed, 25 insertions(+), 10 deletions(-) + +diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp +index 01d7bf6ef0e..0d31eda16f4 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.cpp ++++ b/src/extension/internal/pdfinput/pdf-parser.cpp +@@ -27,6 +27,7 @@ + #include <cstdio> + #include <cstdlib> + #include <cstring> ++#include <memory> + #include <mutex> // std::call_once() + #include <utility> + #include <vector> +@@ -686,7 +687,6 @@ void PdfParser::opSetLineWidth(Object args[], int /*numArgs*/) + void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) + { + Object obj1, obj2, obj3, obj4, obj5; +- Function *funcs[4] = {nullptr, nullptr, nullptr, nullptr}; + GfxColor backdropColor; + GBool haveBackdropColor = gFalse; + GBool alpha = gFalse; +@@ -744,13 +744,14 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) + state->setLineWidth(obj2.getNum()); + } + ++ _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(funcs); ++ + // transfer function + if (_POPPLER_CALL_ARGS_DEREF(obj2, obj1.dictLookup, "TR2").isNull()) { + _POPPLER_CALL_ARGS(obj2, obj1.dictLookup, "TR"); + } + if (obj2.isName(const_cast<char *>("Default")) || obj2.isName(const_cast<char *>("Identity"))) { +- funcs[0] = funcs[1] = funcs[2] = funcs[3] = nullptr; +- state->setTransfer(funcs); ++ state->setTransfer(std::move(funcs)); + } else if (obj2.isArray() && obj2.arrayGetLength() == 4) { + int pos = 4; + for (int i = 0; i < 4; ++i) { +@@ -763,12 +764,14 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) + } + _POPPLER_FREE(obj3); + if (pos == 4) { +- state->setTransfer(funcs); ++ state->setTransfer(std::move(funcs)); + } + } else if (obj2.isName() || obj2.isDict() || obj2.isStream()) { + if ((funcs[0] = Function::parse(&obj2))) { +- funcs[1] = funcs[2] = funcs[3] = nullptr; +- state->setTransfer(funcs); ++ funcs[1] = nullptr; ++ funcs[2] = nullptr; ++ funcs[3] = nullptr; ++ state->setTransfer(std::move(funcs)); + } + } else if (!obj2.isNull()) { + error(errSyntaxError, getPos(), "Invalid transfer function in ExtGState"); +@@ -790,8 +793,7 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) + funcs[0] = Function::parse(&obj3); + if (funcs[0]->getInputSize() != 1 || funcs[0]->getOutputSize() != 1) { + error(errSyntaxError, getPos(), "Invalid transfer function in soft mask in ExtGState"); +- delete funcs[0]; +- funcs[0] = nullptr; ++ _POPPLER_DELETE_TRANSFER_FUNCTION(funcs[0]); + } + } + _POPPLER_FREE(obj3); +@@ -835,9 +837,10 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) + } + } + } +- doSoftMask(&obj3, alpha, blendingColorSpace.get(), isolated, knockout, funcs[0], &backdropColor); ++ doSoftMask(&obj3, alpha, blendingColorSpace.get(), isolated, knockout, ++ _POPPLER_GET_TRANSFER_FUNCTION_POINTER(funcs[0]), &backdropColor); + if (funcs[0]) { +- delete funcs[0]; ++ _POPPLER_DELETE_TRANSFER_FUNCTION(funcs[0]); + } + } else { + error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group"); +diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h +index a67132ba6bd..d04412757bc 100644 +--- a/src/extension/internal/pdfinput/poppler-transition-api.h ++++ b/src/extension/internal/pdfinput/poppler-transition-api.h +@@ -15,6 +15,18 @@ + #include <glib/poppler-features.h> + #include <poppler/UTF.h> + ++#if POPPLER_CHECK_VERSION(25, 6, 0) ++#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) std::vector<std::unique_ptr<Function>> name(4) ++#define _POPPLER_DELETE_TRANSFER_FUNCTION(name) name.reset() ++#define _POPPLER_GET_TRANSFER_FUNCTION_POINTER(name) name.get() ++#else ++#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) Function *name[4] = {} ++#define _POPPLER_DELETE_TRANSFER_FUNCTION(name) \ ++ delete name; \ ++ name = nullptr ++#define _POPPLER_GET_TRANSFER_FUNCTION_POINTER(name) name ++#endif ++ + #if POPPLER_CHECK_VERSION(25,2,0) + #define _POPPLER_GET_CODE_TO_GID_MAP(ff, len) getCodeToGIDMap(ff) + #define _POPPLER_GET_CID_TO_GID_MAP(len) getCIDToGIDMap() +-- +GitLab + diff --git a/media-gfx/inkscape/inkscape-1.4-r2.ebuild b/media-gfx/inkscape/inkscape-1.4-r2.ebuild index 9f3f3ec68a78..e851b5105a39 100644 --- a/media-gfx/inkscape/inkscape-1.4-r2.ebuild +++ b/media-gfx/inkscape/inkscape-1.4-r2.ebuild @@ -118,6 +118,7 @@ PATCHES=( "${FILESDIR}"/${P}-poppler-24.11.0.patch # bug 943499 "${FILESDIR}"/${P}-poppler-24.12.0.patch # bug 946597 "${FILESDIR}"/${P}-poppler-25.02.0.patch # bug 949531 + "${FILESDIR}"/${P}-poppler-25.06.0.patch # bug 957137, pending for 1.4.3 "${FILESDIR}"/${P}-cmake4.patch )
