New commits:
commit c2049168ffb64f5490e89275b2741865377124a9
Author: Thomas Orgis <sobukus AT sourcemage.org>
Commit: Thomas Orgis <sobukus AT sourcemage.org>
firefox-esr: version 128.14.0esr, ++SECURITY_PATCH
commit 18085ffcfa5af1634e6192b7c7173da599b244b8
Author: Thomas Orgis <sobukus AT sourcemage.org>
Commit: Thomas Orgis <sobukus AT sourcemage.org>
inkscape: update to 1.4.2 and fix up build with poppler
diff --git a/graphics/inkscape/DETAILS b/graphics/inkscape/DETAILS
index 1dd08c0..a804f1c 100755
--- a/graphics/inkscape/DETAILS
+++ b/graphics/inkscape/DETAILS
@@ -1,14 +1,13 @@
# Watch: https://inkscape.org/release/ /release/inkscape-([0-9.]+)/source/
. "$GRIMOIRE"/CMAKE_FUNCTIONS
SPELL=inkscape
- VERSION=1.4
+ VERSION=1.4.2
PATCHLEVEL=1
- XVERSION=2024-10-09_e7c3feb100
- ITEM=53679
+ XVERSION=2025-05-08_ebf0e940d0
SOURCE=$SPELL-$VERSION.tar.xz
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-${VERSION}_$XVERSION"
- SOURCE_URL[0]="https://inkscape.org/gallery/item/$ITEM/$SOURCE"
-
SOURCE_HASH=sha512:3b81306b81416597073e7eda2a103112cee63493bcf96fa737bb1edfbd682ebb329e415bbbbfda877aef2a78dc376460040ebc5c0cc2c90c0fe60db5d7d12368
+ SOURCE_URL[0]="https://media.inkscape.org/dl/resources/file/$SOURCE"
+
SOURCE_HASH=sha256:2000530c7917e5260c9e8575a7154ff6926643d2006487d714e304a963f0c782:UPSTREAM_HASH
WEB_SITE=http://www.inkscape.org/
ENTERED=20031207
SECURITY_PATCH=2
diff --git a/graphics/inkscape/HISTORY b/graphics/inkscape/HISTORY
index d83f0a6..94e0b4d 100644
--- a/graphics/inkscape/HISTORY
+++ b/graphics/inkscape/HISTORY
@@ -1,3 +1,13 @@
+2025-08-20 Thomas Orgis <sobukus AT sourcemage.org>
+ * DETAILS: version 1.4.2
+ * patches/0001-Future-proof-against-poppler-24.10-changes.patch,
+ patches/0002-Fix-building-with-Poppler-24.11.patch,
+ patches/0003-Fix-Poppler-private-includes.patch,
+ patches/0004-Fix-building-with-poppler-24.12.0.patch: removed,
upstreamed
+ * patches/0001-blfs-poppler-25.07-fix.patch:
+ fix poppler yet again, to be removed on release of 1.4.3 (if they
+ include the bit for poppler 25.06 to 25.07, that is)
+
2025-01-15 Ismael Luceno <ismael AT sourcemage.org>
* DETAILS: PATCHLEVEL++
* patches/0001-Future-proof-against-poppler-24.10-changes.patch,
diff --git
a/graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
b/graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
deleted file mode 100644
index c069116..0000000
---
a/graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
+++ /dev/null
@@ -1,432 +0,0 @@
-From 22304ae8034d067670a9f95022083a75fac92b4c Mon Sep 17 00:00:00 2001
-From: PBS <pbs3141 AT gmail.com>
-Date: Tue, 22 Oct 2024 14:48:31 +0100
-Subject: [PATCH 1/4] Future-proof against poppler 24.10 changes
-
-Upstream-Status: Backport
-Signed-off-by: Ismael Luceno <ismael AT sourcemage.org>
----
- .../internal/pdfinput/pdf-parser.cpp | 120 ++++++++----------
- src/extension/internal/pdfinput/pdf-parser.h | 4 +-
- .../pdfinput/poppler-transition-api.h | 6 +
- 3 files changed, 61 insertions(+), 69 deletions(-)
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp
b/src/extension/internal/pdfinput/pdf-parser.cpp
-index 97b2909218a..28000a87b0c 100644
---- a/src/extension/internal/pdfinput/pdf-parser.cpp
-+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
-@@ -817,11 +817,11 @@ void PdfParser::opSetExtGState(Object args[], int
/*numArgs*/)
- _POPPLER_FREE(obj3);
- if (_POPPLER_CALL_ARGS_DEREF(obj3, obj2.dictLookup,
"G").isStream()) {
- if (_POPPLER_CALL_ARGS_DEREF(obj4,
obj3.streamGetDict()->lookup, "Group").isDict()) {
-- GfxColorSpace *blendingColorSpace = nullptr;
-+ std::unique_ptr<GfxColorSpace> blendingColorSpace;
- GBool isolated = gFalse;
- GBool knockout = gFalse;
- if (!_POPPLER_CALL_ARGS_DEREF(obj5, obj4.dictLookup,
"CS").isNull()) {
-- blendingColorSpace = GfxColorSpace::parse(nullptr,
&obj5, nullptr, state);
-+ blendingColorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(nullptr, &obj5, nullptr,
state));
- }
- _POPPLER_FREE(obj5);
- if (_POPPLER_CALL_ARGS_DEREF(obj5, obj4.dictLookup,
"I").isBool()) {
-@@ -842,7 +842,7 @@ void PdfParser::opSetExtGState(Object args[], int
/*numArgs*/)
- }
- }
- }
-- doSoftMask(&obj3, alpha, blendingColorSpace, isolated,
knockout, funcs[0], &backdropColor);
-+ doSoftMask(&obj3, alpha, blendingColorSpace.get(),
isolated, knockout, funcs[0], &backdropColor);
- if (funcs[0]) {
- delete funcs[0];
- }
-@@ -927,9 +927,6 @@ void PdfParser::doSoftMask(Object *str, GBool alpha,
- alpha, transferFunc, backdropColor);
- --formDepth;
-
-- if (blendingColorSpace) {
-- delete blendingColorSpace;
-- }
- _POPPLER_FREE(obj1);
- }
-
-@@ -946,42 +943,43 @@ void PdfParser::opSetRenderingIntent(Object
/*args*/[], int /*numArgs*/)
- *
- * Maintains a cache for named color spaces to avoid expensive re-parsing.
- */
--GfxColorSpace *PdfParser::lookupColorSpaceCopy(Object &arg)
-+std::unique_ptr<GfxColorSpace> PdfParser::lookupColorSpaceCopy(Object &arg)
- {
- assert(!arg.isNull());
-- GfxColorSpace *colorSpace = nullptr;
-
- if (char const *name = arg.isName() ? arg.getName() : nullptr) {
- auto const cache_name = std::to_string(formDepth) + "-" + name;
-- if ((colorSpace = colorSpacesCache[cache_name].get())) {
-- return colorSpace->copy();
-+ if (auto cached = colorSpacesCache[cache_name].get()) {
-+ return std::unique_ptr<GfxColorSpace>(cached->copy());
- }
-
-- Object obj = res->lookupColorSpace(name);
-- if (obj.isNull()) {
-- colorSpace = GfxColorSpace::parse(res, &arg, nullptr, state);
-+ std::unique_ptr<GfxColorSpace> colorSpace;
-+ if (auto obj = res->lookupColorSpace(name); !obj.isNull()) {
-+ colorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(res, &obj, nullptr,
state));
- } else {
-- colorSpace = GfxColorSpace::parse(res, &obj, nullptr, state);
-+ colorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(res, &arg, nullptr,
state));
- }
-
- if (colorSpace && colorSpace->getMode() != csPattern) {
-- colorSpacesCache[cache_name].reset(colorSpace->copy());
-+ colorSpacesCache[cache_name] =
std::unique_ptr<GfxColorSpace>(colorSpace->copy());
- }
-+
-+ return colorSpace;
- } else {
- // We were passed in an object directly.
-- colorSpace = GfxColorSpace::parse(res, &arg, nullptr, state);
-+ return std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(res,
&arg, nullptr, state));
- }
-- return colorSpace;
- }
-
- /**
- * Look up pattern/gradients from the GfxResource dictionary
- */
--GfxPattern *PdfParser::lookupPattern(Object *obj, GfxState *state)
-+std::unique_ptr<GfxPattern> PdfParser::lookupPattern(Object *obj, GfxState
*state)
- {
-- if (!obj->isName())
-- return nullptr;
-- return res->lookupPattern(obj->getName(), nullptr, state);
-+ if (!obj->isName()) {
-+ return {};
-+ }
-+ return std::unique_ptr<GfxPattern>(res->lookupPattern(obj->getName(),
nullptr, state));
- }
-
- // TODO not good that numArgs is ignored but args[] is used:
-@@ -990,7 +988,7 @@ void PdfParser::opSetFillGray(Object args[], int
/*numArgs*/)
- GfxColor color;
- builder->beforeStateChange(state);
- state->setFillPattern(nullptr);
-- state->setFillColorSpace(new GfxDeviceGrayColorSpace());
-+
state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
- color.c[0] = dblToCol(args[0].getNum());
- state->setFillColor(&color);
- builder->updateStyle(state);
-@@ -1002,7 +1000,7 @@ void PdfParser::opSetStrokeGray(Object args[], int
/*numArgs*/)
- GfxColor color;
- builder->beforeStateChange(state);
- state->setStrokePattern(nullptr);
-- state->setStrokeColorSpace(new GfxDeviceGrayColorSpace());
-+
state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
- color.c[0] = dblToCol(args[0].getNum());
- state->setStrokeColor(&color);
- builder->updateStyle(state);
-@@ -1015,7 +1013,7 @@ void PdfParser::opSetFillCMYKColor(Object args[], int
/*numArgs*/)
- int i;
- builder->beforeStateChange(state);
- state->setFillPattern(nullptr);
-- state->setFillColorSpace(new GfxDeviceCMYKColorSpace());
-+
state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceCMYKColorSpace>()));
- for (i = 0; i < 4; ++i) {
- color.c[i] = dblToCol(args[i].getNum());
- }
-@@ -1029,7 +1027,7 @@ void PdfParser::opSetStrokeCMYKColor(Object args[],
int /*numArgs*/)
- GfxColor color;
- builder->beforeStateChange(state);
- state->setStrokePattern(nullptr);
-- state->setStrokeColorSpace(new GfxDeviceCMYKColorSpace());
-+
state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceCMYKColorSpace>()));
- for (int i = 0; i < 4; ++i) {
- color.c[i] = dblToCol(args[i].getNum());
- }
-@@ -1043,7 +1041,7 @@ void PdfParser::opSetFillRGBColor(Object args[], int
/*numArgs*/)
- GfxColor color;
- builder->beforeStateChange(state);
- state->setFillPattern(nullptr);
-- state->setFillColorSpace(new GfxDeviceRGBColorSpace());
-+
state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceRGBColorSpace>()));
- for (int i = 0; i < 3; ++i) {
- color.c[i] = dblToCol(args[i].getNum());
- }
-@@ -1056,7 +1054,7 @@ void PdfParser::opSetStrokeRGBColor(Object args[], int
/*numArgs*/) {
- GfxColor color;
- builder->beforeStateChange(state);
- state->setStrokePattern(nullptr);
-- state->setStrokeColorSpace(new GfxDeviceRGBColorSpace());
-+
state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceRGBColorSpace>()));
- for (int i = 0; i < 3; ++i) {
- color.c[i] = dblToCol(args[i].getNum());
- }
-@@ -1068,14 +1066,14 @@ void PdfParser::opSetStrokeRGBColor(Object args[],
int /*numArgs*/) {
- void PdfParser::opSetFillColorSpace(Object args[], int numArgs)
- {
- assert(numArgs >= 1);
-- GfxColorSpace *colorSpace = lookupColorSpaceCopy(args[0]);
-+ auto colorSpace = lookupColorSpaceCopy(args[0]);
- builder->beforeStateChange(state);
- state->setFillPattern(nullptr);
-
- if (colorSpace) {
- GfxColor color;
-- state->setFillColorSpace(colorSpace);
- colorSpace->getDefaultColor(&color);
-+ state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
- state->setFillColor(&color);
- builder->updateStyle(state);
- } else {
-@@ -1089,14 +1087,14 @@ void PdfParser::opSetStrokeColorSpace(Object args[],
int numArgs)
- assert(numArgs >= 1);
- builder->beforeStateChange(state);
-
-- GfxColorSpace *colorSpace = lookupColorSpaceCopy(args[0]);
-+ auto colorSpace = lookupColorSpaceCopy(args[0]);
-
- state->setStrokePattern(nullptr);
-
- if (colorSpace) {
- GfxColor color;
-- state->setStrokeColorSpace(colorSpace);
- colorSpace->getDefaultColor(&color);
-+ state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
- state->setStrokeColor(&color);
- builder->updateStyle(state);
- } else {
-@@ -1159,7 +1157,7 @@ void PdfParser::opSetFillColorN(Object args[], int
numArgs) {
- builder->updateStyle(state);
- }
- if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
-- state->setFillPattern(pattern);
-+ state->setFillPattern(_POPPLER_CONSUME_UNIQPTR_ARG(pattern));
- builder->updateStyle(state);
- }
-
-@@ -1202,7 +1200,7 @@ void PdfParser::opSetStrokeColorN(Object args[], int
numArgs) {
- builder->updateStyle(state);
- }
- if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
-- state->setStrokePattern(pattern);
-+ state->setStrokePattern(_POPPLER_CONSUME_UNIQPTR_ARG(pattern));
- builder->updateStyle(state);
- }
-
-@@ -1579,11 +1577,11 @@ void
PdfParser::doShadingPatternFillFallback(GfxShadingPattern *sPat,
- // TODO not good that numArgs is ignored but args[] is used:
- void PdfParser::opShFill(Object args[], int /*numArgs*/)
- {
-- GfxShading *shading = nullptr;
- GfxPath *savedPath = nullptr;
- bool savedState = false;
-
-- if (!(shading = res->lookupShading(args[0].getName(), nullptr, state))) {
-+ auto shading =
std::unique_ptr<GfxShading>(res->lookupShading(args[0].getName(), nullptr,
state));
-+ if (!shading) {
- return;
- }
-
-@@ -1615,19 +1613,19 @@ void PdfParser::opShFill(Object args[], int
/*numArgs*/)
- // do shading type-specific operations
- switch (shading->getType()) {
- case 1: // Function-based shading
-- doFunctionShFill(static_cast<GfxFunctionShading *>(shading));
-+ doFunctionShFill(static_cast<GfxFunctionShading *>(shading.get()));
- break;
- case 2: // Axial shading
- case 3: // Radial shading
-- builder->addClippedFill(shading, stateToAffine(state));
-+ builder->addClippedFill(shading.get(), stateToAffine(state));
- break;
- case 4: // Free-form Gouraud-shaded triangle mesh
- case 5: // Lattice-form Gouraud-shaded triangle mesh
-- doGouraudTriangleShFill(static_cast<GfxGouraudTriangleShading
*>(shading));
-+ doGouraudTriangleShFill(static_cast<GfxGouraudTriangleShading
*>(shading.get()));
- break;
- case 6: // Coons patch mesh
- case 7: // Tensor-product patch mesh
-- doPatchMeshShFill(static_cast<GfxPatchMeshShading *>(shading));
-+ doPatchMeshShFill(static_cast<GfxPatchMeshShading *>(shading.get()));
- break;
- }
-
-@@ -1636,8 +1634,6 @@ void PdfParser::opShFill(Object args[], int
/*numArgs*/)
- restoreState();
- state->setPath(savedPath);
- }
--
-- delete shading;
- }
-
- void PdfParser::doFunctionShFill(GfxFunctionShading *shading) {
-@@ -2528,7 +2524,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
-
- } else {
- // get color space and color map
-- GfxColorSpace *colorSpace;
-+ std::unique_ptr<GfxColorSpace> colorSpace;
- _POPPLER_CALL_ARGS(obj1, dict->lookup, "ColorSpace");
- if (obj1.isNull()) {
- _POPPLER_FREE(obj1);
-@@ -2537,13 +2533,11 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
- if (!obj1.isNull()) {
- colorSpace = lookupColorSpaceCopy(obj1);
- } else if (csMode == streamCSDeviceGray) {
-- colorSpace = new GfxDeviceGrayColorSpace();
-+ colorSpace = std::make_unique<GfxDeviceGrayColorSpace>();
- } else if (csMode == streamCSDeviceRGB) {
-- colorSpace = new GfxDeviceRGBColorSpace();
-+ colorSpace = std::make_unique<GfxDeviceRGBColorSpace>();
- } else if (csMode == streamCSDeviceCMYK) {
-- colorSpace = new GfxDeviceCMYKColorSpace();
-- } else {
-- colorSpace = nullptr;
-+ colorSpace = std::make_unique<GfxDeviceCMYKColorSpace>();
- }
- _POPPLER_FREE(obj1);
- if (!colorSpace) {
-@@ -2554,10 +2548,9 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
- _POPPLER_FREE(obj1);
- _POPPLER_CALL_ARGS(obj1, dict->lookup, "D");
- }
-- GfxImageColorMap *colorMap = new GfxImageColorMap(bits, &obj1,
colorSpace);
-+ auto colorMap = std::make_unique<GfxImageColorMap>(bits, &obj1,
_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
- _POPPLER_FREE(obj1);
- if (!colorMap->isOk()) {
-- delete colorMap;
- goto err1;
- }
-
-@@ -2568,7 +2561,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
- int maskWidth = 0;
- int maskHeight = 0;
- maskInvert = gFalse;
-- GfxImageColorMap *maskColorMap = nullptr;
-+ std::unique_ptr<GfxImageColorMap> maskColorMap;
- _POPPLER_CALL_ARGS(maskObj, dict->lookup, "Mask");
- _POPPLER_CALL_ARGS(smaskObj, dict->lookup, "SMask");
- Dict* maskDict;
-@@ -2624,7 +2617,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
- _POPPLER_FREE(obj1);
- _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "CS");
- }
-- GfxColorSpace *maskColorSpace = lookupColorSpaceCopy(obj1);
-+ auto maskColorSpace = lookupColorSpaceCopy(obj1);
- _POPPLER_FREE(obj1);
- if (!maskColorSpace || maskColorSpace->getMode() !=
csDeviceGray) {
- goto err1;
-@@ -2634,10 +2627,9 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
- _POPPLER_FREE(obj1);
- _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "D");
- }
-- maskColorMap = new GfxImageColorMap(maskBits, &obj1,
maskColorSpace);
-+ maskColorMap = std::make_unique<GfxImageColorMap>(maskBits,
&obj1, _POPPLER_CONSUME_UNIQPTR_ARG(maskColorSpace));
- _POPPLER_FREE(obj1);
- if (!maskColorMap->isOk()) {
-- delete maskColorMap;
- goto err1;
- }
- //~ handle the Matte entry
-@@ -2718,17 +2710,15 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
-
- // draw it
- if (haveSoftMask) {
-- builder->addSoftMaskedImage(state, str, width, height, colorMap,
interpolate,
-- maskStr, maskWidth, maskHeight, maskColorMap,
maskInterpolate);
-- delete maskColorMap;
-+ builder->addSoftMaskedImage(state, str, width, height,
colorMap.get(), interpolate,
-+ maskStr, maskWidth, maskHeight,
maskColorMap.get(), maskInterpolate);
- } else if (haveExplicitMask) {
-- builder->addMaskedImage(state, str, width, height, colorMap,
interpolate,
-+ builder->addMaskedImage(state, str, width, height,
colorMap.get(), interpolate,
- maskStr, maskWidth, maskHeight, maskInvert,
maskInterpolate);
- } else {
-- builder->addImage(state, str, width, height, colorMap,
interpolate,
-- haveColorKeyMask ? maskColors : static_cast<int
*>(nullptr));
-+ builder->addImage(state, str, width, height, colorMap.get(),
interpolate,
-+ haveColorKeyMask ? maskColors : nullptr);
- }
-- delete colorMap;
-
- _POPPLER_FREE(maskObj);
- _POPPLER_FREE(smaskObj);
-@@ -2746,7 +2736,6 @@ void PdfParser::doForm(Object *str, double *offset)
- {
- Dict *dict;
- GBool transpGroup, isolated, knockout;
-- GfxColorSpace *blendingColorSpace;
- Object matrixObj, bboxObj;
- double m[6], bbox[4];
- Object resObj;
-@@ -2812,12 +2801,12 @@ void PdfParser::doForm(Object *str, double *offset)
-
- // check for a transparency group
- transpGroup = isolated = knockout = gFalse;
-- blendingColorSpace = nullptr;
-+ std::unique_ptr<GfxColorSpace> blendingColorSpace;
- if (_POPPLER_CALL_ARGS_DEREF(obj1, dict->lookup, "Group").isDict()) {
- if (_POPPLER_CALL_ARGS_DEREF(obj2, obj1.dictLookup,
"S").isName("Transparency")) {
- transpGroup = gTrue;
- if (!_POPPLER_CALL_ARGS_DEREF(obj3, obj1.dictLookup,
"CS").isNull()) {
-- blendingColorSpace = GfxColorSpace::parse(nullptr, &obj3,
nullptr, state);
-+ blendingColorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(nullptr, &obj3, nullptr,
state));
- }
- _POPPLER_FREE(obj3);
- if (_POPPLER_CALL_ARGS_DEREF(obj3, obj1.dictLookup, "I").isBool()) {
-@@ -2835,12 +2824,9 @@ void PdfParser::doForm(Object *str, double *offset)
-
- // draw it
- ++formDepth;
-- doForm1(str, resDict, m, bbox, transpGroup, gFalse, blendingColorSpace,
isolated, knockout);
-+ doForm1(str, resDict, m, bbox, transpGroup, gFalse,
blendingColorSpace.get(), isolated, knockout);
- --formDepth;
-
-- if (blendingColorSpace) {
-- delete blendingColorSpace;
-- }
- _POPPLER_FREE(resObj);
- }
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.h
b/src/extension/internal/pdfinput/pdf-parser.h
-index c7c10caefed..8325ea24364 100644
---- a/src/extension/internal/pdfinput/pdf-parser.h
-+++ b/src/extension/internal/pdfinput/pdf-parser.h
-@@ -137,7 +137,7 @@ public:
- void loadPatternColorProfiles(Dict *resources);
- void loadColorProfile();
- void loadColorSpaceProfile(GfxColorSpace *space, Object *obj);
-- GfxPattern *lookupPattern(Object *obj, GfxState *state);
-+ std::unique_ptr<GfxPattern> lookupPattern(Object *obj, GfxState *state);
-
- std::shared_ptr<CairoFontEngine> getFontEngine();
-
-@@ -176,7 +176,7 @@ private:
- //! Caches color spaces by name
- std::map<std::string, std::unique_ptr<GfxColorSpace>> colorSpacesCache;
-
-- GfxColorSpace *lookupColorSpaceCopy(Object &);
-+ std::unique_ptr<GfxColorSpace> lookupColorSpaceCopy(Object &);
-
- void setDefaultApproximationPrecision(); // init color deltas
- void pushOperator(const char *name);
-diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h
b/src/extension/internal/pdfinput/poppler-transition-api.h
-index 481aefadf46..8f03aa17779 100644
---- a/src/extension/internal/pdfinput/poppler-transition-api.h
-+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
-@@ -15,6 +15,12 @@
- #include <glib/poppler-features.h>
- #include <poppler/UTF.h>
-
-+#if POPPLER_CHECK_VERSION(24, 10, 0)
-+#define _POPPLER_CONSUME_UNIQPTR_ARG(value) std::move(value)
-+#else
-+#define _POPPLER_CONSUME_UNIQPTR_ARG(value) value.release()
-+#endif
-+
- #if POPPLER_CHECK_VERSION(24, 5, 0)
- #define _POPPLER_HAS_UNICODE_BOM(value)
(hasUnicodeByteOrderMark(value->toStr()))
- #define _POPPLER_HAS_UNICODE_BOMLE(value)
(hasUnicodeByteOrderMarkLE(value->toStr()))
---
-GitLab
-
diff --git a/graphics/inkscape/patches/0001-blfs-poppler-25.07-fix.patch
b/graphics/inkscape/patches/0001-blfs-poppler-25.07-fix.patch
new file mode 100644
index 0000000..fc4ca7f
--- /dev/null
+++ b/graphics/inkscape/patches/0001-blfs-poppler-25.07-fix.patch
@@ -0,0 +1,262 @@
+Fetched from: https://www.linuxfromscratch.org/patches/blfs/svn/inkscape-1.4.2-poppler_fixes-3.patch
+
+Submitted By: Douglas R. Reno <renodr at linuxfromscratch dot org>
+Date: 2025-06-09
+Initial Package Version: 1.4.2
+Upstream Status: Pending (but approved)
+Origin: Upstream
(https://gitlab.com/inkscape/inkscape/-/merge_requests/7264)
+Description: Fixes building Inkscape against poppler-25.06 by
+ adapting to a private API change where an array of
+ pointers was changed to a vector of unique_ptr. The
MR
+ upstream also adapted the source to be able to build
+ with a copy of poppler built but not installed to
the
+ system, but I didn't carry that part of the patch in
+ as it was both not needed and does not apply without
+ more backports to this version of Inkscape.
+ As such, the only commit we needed was:
+ 97bd8f29a61e691ceea98ca2444b974cf4256ae0
+ Tested with importing clisp-link.pdf from the clisp
+ docs in /usr/share/doc/clisp-2.49.
+
+Updated by: Bruce Dubbs <bdubbs AT linuxfromscratch.org>
+Date: 2025-07-10
+Upstream Status: Pending (but approved)
+Origin: Upstream
(https://gitlab.com/inkscape/inkscape/-/merge_requests/7321)
+Description: Fixes building Inkscape against poppler-25.07
+ Combines previous patch for poppler-25.06 with the
new patch.
+
+
+
+diff -Naurp
inkscape-1.4.2_2025-05-08_ebf0e940d0.orig/src/extension/internal/pdfinput/pdf-parser.cpp