Bug#1143108: marked as done (inkscape: will FTBFS with poppler 26.07)

"Debian Bug Tracking System" <[email protected]> Mon, 03 Aug 2026 15:23:03 +0000
Newsgroups gmane.linux.debian.devel.multimedia
Message-ID <handler.1143108.D1143108.17857704562814440.ackdone@bugs.debian.org>
This is a multi-part message in MIME format...

------------=_1785770583-2815255-0
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"

Your message dated Mon, 03 Aug 2026 15:20:53 +0000
with message-id <[email protected]>
and subject line Bug#1143108: fixed in inkscape 1.4.3-2
has caused the Debian Bug report #1143108,
regarding inkscape: will FTBFS with poppler 26.07
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


--=20
1143108: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D1143108
Debian Bug Tracking System
Contact [email protected] with problems

------------=_1785770583-2815255-0
Content-Type: message/rfc822
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

Received: (at submit) by bugs.debian.org; 30 Jul 2026 13:21:07 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
	(2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-13.9 required=4.0 tests=BAYES_00,FOURLA,
	FROMDEVELOPER,FVGT_m_MULTI_ODD,NO_RELAYS,PGPSIGNATURE,
	WORD_WITHOUT_VOWELS,XMAILER_REPORTBUG autolearn=ham autolearn_force=no
	version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 848; hammy, 150; neutral, 739; spammy,
	0. spammytokens: hammytokens:0.000-+--sk:iQIzBAE, 0.000-+--sk:iqizbae,
	0.000-+--H*Ad:N*Bug, 0.000-+--HTo:N*Debian, 0.000-+--HTo:N*System
Return-path: <[email protected]>
Received: via submission
	by buxtehude.debian.org with esmtp (Exim 4.96)
	(envelope-from <[email protected]>)
	id 1wpQh5-00Gm38-24
	for [email protected];
	Thu, 30 Jul 2026 13:21:06 +0000
Content-Type: multipart/mixed; boundary="===============7317655412774112155=="
MIME-Version: 1.0
From: Nadzeya Hutsko <[email protected]>
To: Debian Bug Tracking System <[email protected]>
Subject: inkscape: will FTBFS with poppler 26.07
Message-ID: <178541765923.111708.4358239416893171239.reportbug@debian>
X-Mailer: reportbug 13.2.0
Date: Thu, 30 Jul 2026 15:20:59 +0200
Delivered-To: [email protected]

This is a multi-part MIME message sent by reportbug.


--===============7317655412774112155==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Source: inkscape
Version: 1.4.3-1
Severity: normal
Tags: ftbfs

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Dear Maintainer,

poppler 26.07 is currently in experimental. Once it migrates to unstable,
inkscape 1.4.3-1 will fail to build from source as the PDF import extension
(src/extension/internal/pdfinput/) does not compile against it

poppler 26.02-26.07 reshaped much of the internal C++ API it uses.
GfxColor*/PDFRectangle* parameters became const references,
Object::getString() returns const std::string&, Gfx8BitFont::getEncoding()
returns a std::array, GfxFont::getWMode() returns a scoped enum, and
GfxState::setPath(), Object::streamGetDict()/arrayGetNF()/dictGetKey()/
dictGetValNF() and the Object(Dict*) constructor were removed, while
Catalog::indexToLabel() now takes a std::string*

All of these have already been fixed upstream. You may prefer to package a
newer upstream release (1.4.4+, which contains them natively) rather than
carry a patch. If a backport is more convenient, the attached patch combines
the relevant upstream merge requests -- !7780, !7839, !7919, !7968, !8034 and
!8037 -- rebased onto 1.4.3. Every change is guarded on POPPLER_CHECK_VERSION,
so it is a no-op with the poppler currently in unstable and can be applied now,
ahead of the transition

Thanks,
Nadzeya

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEuVOE/FJ0HcdfWSw//lAdKwFeZPsFAmprT7gACgkQ/lAdKwFe
ZPskrg/+KPi8GT3siGW/atvAaPQkE8PZyJfDwEZHBGDS4CK9OfMpkwph38c5yOlB
kShnMqVWqOHXPsX+V2c773CyQsu9wZrubYhT03DcGXmjHZrFUMSUhjS2zqUkjNHq
ImK/uMo8KUDVtlRS7DdoZ8gJ8/bDGxvgu2NQwjZ1Jv2CbqNgKQxEAtaanvEJBvUZ
rVLkl+bkkJHeKBNhUaa77E+1nw5SOlBBFFKAb4fPs/UPahyvHRwH0QaiLL/vvnem
2+rpRAp+rvGKtBA0PVHkwAOeP7Zxlkwx4CBHy4GXw5PCpFko8yZh7zIXfLOu3tzc
rPR902qZDT1t5hXaD6i6rklujY8Dw/Sqho5sCCNCNrWY2cAHAVP3pIuWNjHcAb+G
vR9lPcfAZSP4mtXKCVqkIISLm9YwIjNfhsGZ+cwPBQyG9Ji+u2IQ6CtvBcMsbNbq
jX4hOddb3BRNUpsWZ6kPlcDctL1TYTzqt6eP+eVzB3RushozsJ1ejJq9JBgFkAb6
f0+s8GNfsIsFROCKsOVs3ti9dWUSuSgrL67/9U/zCbc81wDG4Cy/ESqhVZ0UxnSD
Qv26Iqq1kkf2wJDd2iUbdh0gzMkSsfs+miyucQ0jIWKV3AZp/2L0rVSntpi5v9hA
8VAlOM35yNsuHaxuSIIpA9nEvogJu+USPj26uPjQGs8WyI1soXs=
=lqz7
-----END PGP SIGNATURE-----

--===============7317655412774112155==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="fix-ftbfs-with-poppler-26.07.patch"

Description: Fix FTBFS with poppler 26.07
 poppler 26.02 through 26.07 reshaped large parts of the internal C++ API used
 by Inkscape's PDF import extension: many GfxColor*/PDFRectangle* parameters and
 getters became const references, Object::getString() now returns a
 const std::string&, Gfx8BitFont::getEncoding() returns a std::array,
 GfxFont::getWMode() returns a scoped enum, and GfxState::setPath(),
 Object::streamGetDict()/arrayGetNF()/dictGetKey()/dictGetValNF() and the
 Object(Dict*) constructor were removed, while Catalog::indexToLabel() now
 takes a std::string*.
 .
 This backports Inkscape's own upstream poppler 26.02-26.07 port, rebased onto
 1.4.3, combining these upstream merge requests:
   * !7780 - Fix building with Poppler 26.02 (47e20c05)
   * !7839 - Fix building with Poppler 26.04 (9fcd1ec7)
   * !7919 - Support for poppler >= 26.05 font encoding change
   * !7968 - Fix building with Poppler 26.06 (1ad89c94)
   * !8034 - Fix building with Poppler 26.07 (fc52525f)
   * !8037 - Fix incorrect Poppler version check (09cbe3cf)
 .
 Every change is guarded on POPPLER_CHECK_VERSION, so it is a no-op with the
 poppler currently in the archive and can be applied ahead of the transition.
Author: Nadzeya Hutsko <[email protected]>
Bug-Ubuntu: https://bugs.launchpad.net/bugs/2162141
Origin: backport, https://gitlab.com/inkscape/inkscape/-/commit/09cbe3cf
Forwarded: not-needed
Last-Update: 2026-07-30
--- a/src/extension/internal/pdfinput/pdf-input.cpp
+++ b/src/extension/internal/pdfinput/pdf-input.cpp
@@ -59,6 +59,8 @@
 #include "document.h"
 #include "extension/input.h"
 #include "extension/system.h"
+#include <optional>
+
 #include "inkscape.h"
 #include "object/sp-root.h"
 #include "pdf-parser.h"
@@ -808,7 +810,11 @@
     }
 
     // Apply crop settings
+#if POPPLER_CHECK_VERSION(26, 6, 0)
+    std::optional<PDFRectangle> clipToBox;
+#else
     _POPPLER_CONST PDFRectangle *clipToBox = nullptr;
+#endif
 
     if (crop_to == "media-box") {
         clipToBox = page->getMediaBox();
@@ -822,8 +828,16 @@
         clipToBox = page->getArtBox();
     }
 
+    std::optional<PDFRectangle> cropBox;
+#if POPPLER_CHECK_VERSION(26, 6, 0)
+    cropBox = clipToBox;
+#else
+    if (clipToBox) {
+        cropBox = *clipToBox;
+    }
+#endif
     // Create parser  (extension/internal/pdfinput/pdf-parser.h)
-    auto pdf_parser = PdfParser(pdf_doc, builder, page, clipToBox);
+    auto pdf_parser = PdfParser(pdf_doc, builder, page, cropBox);
 
     // Set up approximation precision for parser. Used for converting Mesh Gradients into tiles.
     if ( color_delta <= 0.0 ) {
--- a/src/extension/internal/pdfinput/pdf-parser.cpp
+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
@@ -43,6 +43,7 @@
 #include <poppler/GlobalParams.h>
 #include <poppler/Lexer.h>
 #include <poppler/Object.h>
+#include <poppler/OptionalContent.h>
 #include <poppler/OutputDev.h>
 #include <poppler/PDFDoc.h>
 #include <poppler/Page.h>
@@ -266,7 +267,7 @@
 //------------------------------------------------------------------------
 
 PdfParser::PdfParser(std::shared_ptr<PDFDoc> pdf_doc, Inkscape::Extension::Internal::SvgBuilder *builderA, Page *page,
-                     _POPPLER_CONST PDFRectangle *cropBox)
+                     const std::optional<PDFRectangle> &cropBox)
     : _pdf_doc(pdf_doc)
     , xref(pdf_doc->getXRef())
     , builder(builderA)
@@ -292,8 +293,8 @@
     if (page) {
         // Increment the page building here and set page label
         Catalog *catalog = pdf_doc->getCatalog();
-        GooString *label = new GooString("");
-        catalog->indexToLabel(page->getNum() - 1, label);
+        _POPPLER_STRING_26_7 label;
+        catalog->indexToLabel(page->getNum() - 1, &label);
         builder->pushPage(getString(label), state);
     }
 
@@ -307,8 +308,8 @@
     builder->setMargins(getRect(page->getTrimBox()) * scale,
                         getRect(page->getArtBox()) * scale,
                         getRect(page->getBleedBox()) * scale);
-    if (cropBox && getRect(cropBox) != page_box) {
-        builder->cropPage(getRect(cropBox) * scale);
+    if (cropBox && getRect(*cropBox) != page_box) {
+        builder->cropPage(getRect(*cropBox) * scale);
     }
 
     saveState();
@@ -325,7 +326,7 @@
     , printCommands(false)
     , res(new GfxResources(xref, resDict, nullptr))
     , // start the resource stack
-    state(new GfxState(72, 72, box, 0, false))
+    state(new _POPPLER_GFX_STATE(72, 72, *box, 0, false))
     , fontChanged(gFalse)
     , clip(clipNone)
     , ignoreUndef(0)
@@ -653,7 +654,11 @@
 void PdfParser::opSetLineJoin(Object args[], int /*numArgs*/)
 {
   builder->beforeStateChange(state);
+#if POPPLER_CHECK_VERSION(26,2,0)
+  state->setLineJoin((GfxState::LineJoinStyle) args[0].getInt());
+#else
   state->setLineJoin(args[0].getInt());
+#endif
   builder->updateStyle(state);
 }
 
@@ -661,7 +666,11 @@
 void PdfParser::opSetLineCap(Object args[], int /*numArgs*/)
 {
   builder->beforeStateChange(state);
+#if POPPLER_CHECK_VERSION(26,2,0)
+  state->setLineCap((GfxState::LineCapStyle) args[0].getInt());
+#else
   state->setLineCap(args[0].getInt());
+#endif
   builder->updateStyle(state);
 }
 
@@ -809,7 +818,7 @@
             }
             _POPPLER_FREE(obj3);
             if (_POPPLER_CALL_ARGS_DEREF(obj3, obj2.dictLookup, "G").isStream()) {
-                if (_POPPLER_CALL_ARGS_DEREF(obj4, obj3.streamGetDict()->lookup, "Group").isDict()) {
+                if (_POPPLER_CALL_ARGS_DEREF(obj4, obj3.getStream()->getDict()->lookup, "Group").isDict()) {
                     std::unique_ptr<GfxColorSpace> blendingColorSpace;
                     GBool isolated = gFalse;
                     GBool knockout = gFalse;
@@ -872,7 +881,7 @@
   }
 
   // get stream dict
-  dict = str->streamGetDict();
+  dict = str->getStream()->getDict();
 
   // check form type
   _POPPLER_CALL_ARGS(obj1, dict->lookup, "FormType");
@@ -984,7 +993,7 @@
   state->setFillPattern(nullptr);
   state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
   color.c[0] = dblToCol(args[0].getNum());
-  state->setFillColor(&color);
+  state->_POPPLER_SET_FILL_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -996,7 +1005,7 @@
   state->setStrokePattern(nullptr);
   state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
   color.c[0] = dblToCol(args[0].getNum());
-  state->setStrokeColor(&color);
+  state->_POPPLER_SET_STROKE_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1011,7 +1020,7 @@
   for (i = 0; i < 4; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
-  state->setFillColor(&color);
+  state->_POPPLER_SET_FILL_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1025,7 +1034,7 @@
   for (int i = 0; i < 4; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
-  state->setStrokeColor(&color);
+  state->_POPPLER_SET_STROKE_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1039,7 +1048,7 @@
   for (int i = 0; i < 3; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
-  state->setFillColor(&color);
+  state->_POPPLER_SET_FILL_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1052,7 +1061,7 @@
   for (int i = 0; i < 3; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
-  state->setStrokeColor(&color);
+  state->_POPPLER_SET_STROKE_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1068,7 +1077,7 @@
     GfxColor color;
     colorSpace->getDefaultColor(&color);
     state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
-    state->setFillColor(&color);
+    state->_POPPLER_SET_FILL_COLOR(color);
     builder->updateStyle(state);
   } else {
     error(errSyntaxError, getPos(), "Bad color space (fill)");
@@ -1089,7 +1098,7 @@
     GfxColor color;
     colorSpace->getDefaultColor(&color);
     state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
-    state->setStrokeColor(&color);
+    state->_POPPLER_SET_STROKE_COLOR(color);
     builder->updateStyle(state);
   } else {
     error(errSyntaxError, getPos(), "Bad color space (stroke)");
@@ -1109,7 +1118,7 @@
   for (i = 0; i < numArgs; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
-  state->setFillColor(&color);
+  state->_POPPLER_SET_FILL_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1126,7 +1135,7 @@
   for (i = 0; i < numArgs; ++i) {
     color.c[i] = dblToCol(args[i].getNum());
   }
-  state->setStrokeColor(&color);
+  state->_POPPLER_SET_STROKE_COLOR(color);
   builder->updateStyle(state);
 }
 
@@ -1147,7 +1156,7 @@
 	  color.c[i] = dblToCol(args[i].getNum());
 	}
       }
-      state->setFillColor(&color);
+      state->_POPPLER_SET_FILL_COLOR(color);
       builder->updateStyle(state);
     }
     if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
@@ -1166,7 +1175,7 @@
 	color.c[i] = dblToCol(args[i].getNum());
       }
     }
-    state->setFillColor(&color);
+    state->_POPPLER_SET_FILL_COLOR(color);
     builder->updateStyle(state);
   }
 }
@@ -1190,7 +1199,7 @@
 	  color.c[i] = dblToCol(args[i].getNum());
 	}
       }
-      state->setStrokeColor(&color);
+      state->_POPPLER_SET_STROKE_COLOR(color);
       builder->updateStyle(state);
     }
     if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
@@ -1209,7 +1218,7 @@
 	color.c[i] = dblToCol(args[i].getNum());
       }
     }
-    state->setStrokeColor(&color);
+    state->_POPPLER_SET_STROKE_COLOR(color);
     builder->updateStyle(state);
   }
 }
@@ -1565,7 +1574,13 @@
 
   // restore graphics state
   restoreState();
+#if POPPLER_CHECK_VERSION(26, 2, 0)
+  state->clearPath();
+  GfxPath *currPath = const_cast<GfxPath*>(state->getPath());
+  currPath->append(savedPath);
+#else
   state->setPath(savedPath);
+#endif
 }
 
 // TODO not good that numArgs is ignored but args[] is used:
@@ -1626,7 +1641,13 @@
   // restore graphics state
   if (savedState) {
     restoreState();
+#if POPPLER_CHECK_VERSION(26, 2, 0)
+    state->clearPath();
+    GfxPath *currPath = const_cast<GfxPath*>(state->getPath());
+    currPath->append(savedPath);
+#else
     state->setPath(savedPath);
+#endif
   }
 }
 
@@ -1680,7 +1701,7 @@
 
     // use the center color
     shading->getColor(xM, yM, &fillColor);
-    state->setFillColor(&fillColor);
+    state->_POPPLER_SET_FILL_COLOR(fillColor);
 
     // fill the rectangle
     state->moveTo(x0 * matrix[0] + y0 * matrix[2] + matrix[4],
@@ -1779,7 +1800,7 @@
     }
   }
   if (i == nComps || depth == maxDepths[pdfGouraudTriangleShading-1]) {
-    state->setFillColor(color0);
+    state->_POPPLER_SET_FILL_COLOR(*color0);
     state->moveTo(x0, y0);
     state->lineTo(x1, y1);
     state->lineTo(x2, y2);
@@ -1857,7 +1878,7 @@
     color.c[i] = GfxColorComp(patch->color[0][0].c[i]);
   }
   if (i == nComps || depth == maxDepths[pdfPatchMeshShading-1]) {
-    state->setFillColor(&color);
+    state->_POPPLER_SET_FILL_COLOR(color);
     state->moveTo(patch->x[0][0], patch->y[0][0]);
     state->curveTo(patch->x[0][1], patch->y[0][1],
 		   patch->x[0][2], patch->y[0][2],
@@ -2213,7 +2234,7 @@
 {
   Array *a = nullptr;
   Object obj;
-  int wMode = 0; // Writing mode (horizontal/vertical).
+  _POPPLER_WMODE wMode = _POPPLER_WMODE_HORIZONTAL; // Writing mode (horizontal/vertical).
 
   if (!state->getFont()) {
     error(errSyntaxError, getPos(), "No font in show/space");
@@ -2227,7 +2248,7 @@
     if (obj.isNum()) {
       // this uses the absolute value of the font size to match
       // Acrobat's behavior
-      if (wMode) {
+      if (wMode != _POPPLER_WMODE_HORIZONTAL) {
 	state->textShift(0, -obj.getNum() * 0.001 *
 			    fabs(state->getFontSize()));
       } else {
@@ -2248,15 +2269,11 @@
  * This adds a string from a PDF file that is contained in one command ('Tj', ''', '"')
  * or is one string in ShowSpacetext ('TJ').
  */
-#if POPPLER_CHECK_VERSION(0,64,0)
-void PdfParser::doShowText(const GooString *s) {
-#else
-void PdfParser::doShowText(GooString *s) {
-#endif
+void PdfParser::doShowText(const std::string &s) {
     auto font = state->getFont();
-    int wMode = font->getWMode(); // Vertical/Horizontal/Invalid
+    _POPPLER_WMODE wMode = font->getWMode(); // Vertical/Horizontal/Invalid
 
-    builder->beginString(state, get_goostring_length(*s));
+    builder->beginString(state, s.size());
 
     // handle a Type 3 char
     if (font->getType() == fontType3) {
@@ -2266,8 +2283,8 @@
     double riseX, riseY;
     state->textTransformDelta(0, state->getRise(), &riseX, &riseY);
 
-    auto p = s->getCString(); // char* or const char*
-    int len = get_goostring_length(*s);
+    auto p = s.c_str(); // char* or const char*
+    int len = s.size();
 
     while (len > 0) {
 
@@ -2289,7 +2306,7 @@
         auto ax = dx;
         auto ay = dy;
 
-        if (wMode != 0) {
+        if (wMode != _POPPLER_WMODE_HORIZONTAL) {
             // Vertical text (or invalid value).
             dy += state->getCharSpace();
             if (n == 1 && *p == ' ') {
@@ -2324,6 +2341,15 @@
     builder->endString(state);
 }
 
+#if POPPLER_CHECK_VERSION(0,64,0)
+void PdfParser::doShowText(const GooString *s) {
+#else
+void PdfParser::doShowText(GooString *s) {
+#endif
+    const std::string str = s->toStr();
+    doShowText(str);
+}
+
 
 //------------------------------------------------------------------------
 // XObject operators
@@ -2352,7 +2378,7 @@
     }
 
 //add layer at root if xObject has type OCG
-    _POPPLER_CALL_ARGS(obj2, obj1.streamGetDict()->lookup, "OC");
+    _POPPLER_CALL_ARGS(obj2, obj1.getStream()->getDict()->lookup, "OC");
     if(obj2.isDict()){
         auto type_dict = obj2.getDict();
         if (type_dict->lookup("Type").isName("OCG")) {
@@ -2370,7 +2396,7 @@
         }
     }
 
-    _POPPLER_CALL_ARGS(obj2, obj1.streamGetDict()->lookup, "Subtype");
+    _POPPLER_CALL_ARGS(obj2, obj1.getStream()->getDict()->lookup, "Subtype");
     if (obj2.isName(const_cast<char*>("Image"))) {
         _POPPLER_CALL_ARGS(refObj, res->lookupXObjectNF, name);
         doImage(&refObj, obj1.getStream(), gFalse);
@@ -2378,7 +2404,7 @@
     } else if (obj2.isName(const_cast<char*>("Form"))) {
         doForm(&obj1);
     } else if (obj2.isName(const_cast<char*>("PS"))) {
-        _POPPLER_CALL_ARGS(obj3, obj1.streamGetDict()->lookup, "Level1");
+        _POPPLER_CALL_ARGS(obj3, obj1.getStream()->getDict()->lookup, "Level1");
     } else if (obj2.isName()) {
         error(errSyntaxError, getPos(), "Unknown XObject subtype '{0:s}'", obj2.getName());
     } else {
@@ -2571,7 +2597,7 @@
 	            goto err1;
             }
             maskStr = smaskObj.getStream();
-            maskDict = smaskObj.streamGetDict();
+            maskDict = smaskObj.getStream()->getDict();
             _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "Width");
             if (obj1.isNull()) {
                     _POPPLER_FREE(obj1);
@@ -2649,7 +2675,7 @@
                 goto err1;
             }
             maskStr = maskObj.getStream();
-            maskDict = maskObj.streamGetDict();
+            maskDict = maskObj.getStream()->getDict();
             _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "Width");
             if (obj1.isNull()) {
                 _POPPLER_FREE(obj1);
@@ -2749,7 +2775,7 @@
     }
 
     // get stream dict
-    dict = str->streamGetDict();
+    dict = str->getStream()->getDict();
 
     // check form type
     _POPPLER_CALL_ARGS(obj1, dict->lookup, "FormType");
@@ -2931,7 +2957,12 @@
 
   // build dictionary
 #if defined(POPPLER_NEW_OBJECT_API)
+#if POPPLER_CHECK_VERSION(26, 6, 0)
+  // poppler 26.06 removed the Object(Dict *) constructor
+  dict = Object(std::make_unique<Dict>(xref));
+#else
   dict = Object(new Dict(xref));
+#endif
 #else
   dict.initDict(xref);
 #endif
@@ -2964,7 +2995,11 @@
   // make stream
 #if defined(POPPLER_NEW_OBJECT_API)
   str = new EmbedStream(parser->getStream(), dict.copy(), gFalse, 0);
+#if POPPLER_CHECK_VERSION(26, 2, 0)
+  str = str->addFilters(std::unique_ptr<Stream>(str), dict.getDict()).release();
+#else
   str = str->addFilters(dict.getDict());
+#endif
 #else
   str = new EmbedStream(parser->getStream(), &dict, gFalse, 0);
   str = str->addFilters(&dict);
@@ -3137,10 +3172,17 @@
             auto visible = true;
             // Normally we'd use poppler optContentIsVisible, but these dict
             // objects don't retain their references so can't be used directly.
+#if POPPLER_CHECK_VERSION(26, 2, 0)
+            for (auto &[ref, ocg] : ocgs->getOCGs()) {
+                if (ocg->getName()->toStr() == label)
+                    visible = ocg->getState() == OptionalContentGroup::On;
+            }
+#else
             for (auto &[ref, ocg] : ocgs->getOCGs()) {
                 if (ocg->getName()->cmp(label) == 0)
                     visible = ocg->getState() == OptionalContentGroup::On;
             }
+#endif
             builder->addOptionalGroup(dict->getKey(j), label, visible);
         }
     }
--- a/src/extension/internal/pdfinput/pdf-parser.h
+++ b/src/extension/internal/pdfinput/pdf-parser.h
@@ -29,6 +29,7 @@
 #include <glib/poppler-features.h>
 #include <map>
 #include <memory>
+#include <optional>
 #include <poppler/Object.h>
 #include <string>
 
@@ -113,7 +114,7 @@
 public:
 
   // Constructor for regular output.
-    PdfParser(std::shared_ptr<PDFDoc> pdf_doc, SvgBuilder *builderA, Page *page, _POPPLER_CONST PDFRectangle *cropBox);
+    PdfParser(std::shared_ptr<PDFDoc> pdf_doc, SvgBuilder *builderA, Page *page, const std::optional<PDFRectangle> &cropBox);
     // Constructor for a sub-page object.
     PdfParser(XRef *xrefA, SvgBuilder *builderA, Dict *resDict, _POPPLER_CONST PDFRectangle *box);
 
@@ -283,10 +284,11 @@
     void opMoveShowText(Object args[], int numArgs);
     void opMoveSetShowText(Object args[], int numArgs);
     void opShowSpaceText(Object args[], int numArgs);
+    void doShowText(const std::string &s);
 #if POPPLER_CHECK_VERSION(0,64,0)
-  void doShowText(const GooString *s);
+    void doShowText(const GooString *s);
 #else
-  void doShowText(GooString *s);
+    void doShowText(GooString *s);
 #endif
   
 
--- a/src/extension/internal/pdfinput/pdf-utils.cpp
+++ b/src/extension/internal/pdfinput/pdf-utils.cpp
@@ -133,6 +133,11 @@
     return Geom::Rect(box->x1, box->y1, box->x2, box->y2);
 }
 
+Geom::Rect getRect(_POPPLER_CONST PDFRectangle &box)
+{
+    return Geom::Rect(box.x1, box.y1, box.x2, box.y2);
+}
+
 Geom::PathVector getPathV(GfxPath *path) 
 {
     if (!path) {
--- a/src/extension/internal/pdfinput/pdf-utils.h
+++ b/src/extension/internal/pdfinput/pdf-utils.h
@@ -59,6 +59,7 @@
 };
 
 Geom::Rect getRect(_POPPLER_CONST PDFRectangle *box);
+Geom::Rect getRect(_POPPLER_CONST PDFRectangle &box);
 Geom::PathVector getPathV(GfxPath *gPath);
 
 #endif /* PDF_UTILS_H */
--- a/src/extension/internal/pdfinput/poppler-transition-api.h
+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
@@ -15,6 +15,38 @@
 #include <glib/poppler-features.h>
 #include <poppler/UTF.h>
 
+#if POPPLER_CHECK_VERSION(26, 7, 0)
+#define _POPPLER_STRING_26_7 std::string
+#else
+#define _POPPLER_STRING_26_7 GooString
+#endif
+
+#if POPPLER_CHECK_VERSION(26, 6, 0)
+#define _POPPLER_GET_GRAY(color, gray) getGray(color, gray)
+#define _POPPLER_GET_RGB(color, rgb) getRGB(color, rgb)
+#define _POPPLER_GET_CMYK(color, cmyk) getCMYK(color, cmyk)
+#define _POPPLER_SET_FILL_COLOR(color) setFillColor(color)
+#define _POPPLER_SET_STROKE_COLOR(color) setStrokeColor(color)
+#define _POPPLER_GFX_STATE(h, v, Rect, rotateA, upsideDown) GfxState(h, v, Rect, rotateA, upsideDown)
+#else
+#define _POPPLER_GET_GRAY(color, gray) getGray(&color, gray)
+#define _POPPLER_GET_RGB(color, rgb) getRGB(&color, rgb)
+#define _POPPLER_GET_CMYK(color, cmyk) getCMYK(&color, cmyk)
+#define _POPPLER_SET_FILL_COLOR(color) setFillColor(&color)
+#define _POPPLER_SET_STROKE_COLOR(color) setStrokeColor(&color)
+#define _POPPLER_GFX_STATE(h, v, Rect, rotateA, upsideDown) GfxState(h, v, &Rect, rotateA, upsideDown)
+#endif
+
+#if POPPLER_CHECK_VERSION(26, 2, 0)
+#define _POPPLER_WMODE GfxFont::WritingMode
+#define _POPPLER_WMODE_HORIZONTAL GfxFont::WritingMode::Horizontal
+#define _POPPLER_WMODE_VERTICAL GfxFont::WritingMode::Vertical
+#else
+#define _POPPLER_WMODE int
+#define _POPPLER_WMODE_HORIZONTAL 0
+#define _POPPLER_WMODE_VERTICAL 1
+#endif
+
 #if POPPLER_CHECK_VERSION(25, 7, 0)
 #define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) textShiftWithUserCoords(dx, dy)
 #define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make(std::span(font_data), faceIndex)
@@ -62,11 +94,11 @@
 #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()))
+#define _POPPLER_HAS_UNICODE_BOM(value) (hasUnicodeByteOrderMark(value))
+#define _POPPLER_HAS_UNICODE_BOMLE(value) (hasUnicodeByteOrderMarkLE(value))
 #else
-#define _POPPLER_HAS_UNICODE_BOM(value) (value->hasUnicodeMarker())
-#define _POPPLER_HAS_UNICODE_BOMLE(value) (value->hasUnicodeMarkerLE())
+#define _POPPLER_HAS_UNICODE_BOM(value) (GooString(value).hasUnicodeMarker())
+#define _POPPLER_HAS_UNICODE_BOMLE(value) (GooString(value).hasUnicodeMarkerLE())
 #endif
 
 #if POPPLER_CHECK_VERSION(24, 3, 0)
--- a/src/extension/internal/pdfinput/poppler-utils.cpp
+++ b/src/extension/internal/pdfinput/poppler-utils.cpp
@@ -88,7 +88,12 @@
                 r.num = hashFontObject(&obj2);
             }
             // Newer poppler will require some reworking as it gives a shared ptr.
+#if POPPLER_CHECK_VERSION(26, 3, 0)
+            // poppler 26.03 made GfxFont::makeFont() take a const Dict& fontDict
+            fonts[i] = GfxFont::makeFont(xref, fontDict->getKey(i), r, *obj2.getDict());
+#else
             fonts[i] = GfxFont::makeFont(xref, fontDict->getKey(i), r, obj2.getDict());
+#endif
             if (fonts[i] && !fonts[i]->isOk()) {
                 fonts[i] = nullptr;
             }
@@ -145,7 +150,6 @@
 
 void InkFontDict::hashFontObject1(const Object *obj, FNVHash *h)
 {
-    const GooString *s;
     const char *p;
     double r;
     int n, i;
@@ -165,11 +169,16 @@
             r = obj->getReal();
             h->hash((char *)&r, sizeof(double));
             break;
-        case objString:
+        case objString: {
             h->hash('s');
-            s = obj->getString();
+#if POPPLER_CHECK_VERSION(26, 4, 0)
+            const auto &s = obj->getString();
+            h->hash(s.c_str(), s.size());
+#else
+            const GooString* s = obj->getString();
             h->hash(s->c_str(), get_goostring_length(*s));
-            break;
+#endif
+            } break;
         case objName:
             h->hash('n');
             p = obj->getName();
@@ -178,26 +187,28 @@
         case objNull:
             h->hash('z');
             break;
-        case objArray:
-            h->hash('a');
-            n = obj->arrayGetLength();
-            h->hash((char *)&n, sizeof(int));
-            for (i = 0; i < n; ++i) {
-                const Object &obj2 = obj->arrayGetNF(i);
-                hashFontObject1(&obj2, h);
-            }
-            break;
-        case objDict:
-            h->hash('d');
-            n = obj->dictGetLength();
-            h->hash((char *)&n, sizeof(int));
-            for (i = 0; i < n; ++i) {
-                p = obj->dictGetKey(i);
-                h->hash(p, (int)strlen(p));
-                const Object &obj2 = obj->dictGetValNF(i);
-                hashFontObject1(&obj2, h);
-            }
-            break;
+        case objArray: {
+                h->hash('a');
+                Array * objArray = obj->getArray();
+                n = objArray->getLength();
+                h->hash((char *)&n, sizeof(int));
+                for (i = 0; i < n; ++i) {
+                    const Object &obj2 = objArray->getNF(i);
+                    hashFontObject1(&obj2, h);
+                }
+            } break;
+        case objDict: {
+                h->hash('d');
+                auto objdict = obj->getDict();
+                n = objdict->getLength();
+                h->hash((char *)&n, sizeof(int));
+                for (i = 0; i < n; ++i) {
+                    auto p = std::string(objdict->getKey(i));
+                    h->hash(p.c_str(), p.length());
+                    const Object &obj2 = objdict->getValNF(i);
+                    hashFontObject1(&obj2, h);
+                }
+            } break;
         case objStream:
             // this should never happen - streams must be indirect refs
             break;
@@ -535,7 +546,7 @@
                 continue;
 
             Ref resourcesRef;
-            const Object resObj = obj2.streamGetDict()->lookup("Resources", &resourcesRef);
+            const Object resObj = obj2.getStream()->getDict()->lookup("Resources", &resourcesRef);
             if (resourcesRef != Ref::INVALID() && !visitedObjects.insert(resourcesRef.num).second)
                 continue;
 
@@ -590,16 +601,29 @@
  * Convert PDF strings, which can be formatted as UTF8, UTF16BE or UTF16LE into
  * a predictable UTF8 string consistant with svg requirements.
  */
-std::string getString(const GooString *value)
+std::string getString(const std::string &value)
 {
     if (_POPPLER_HAS_UNICODE_BOM(value)) {
-        return g_convert(value->getCString () + 2, get_goostring_length(*value) - 2,
+        return g_convert(value.c_str() + 2, value.size() - 2,
                          "UTF-8", "UTF-16BE", NULL, NULL, NULL);
     } else if (_POPPLER_HAS_UNICODE_BOMLE(value)) {
-        return g_convert(value->getCString () + 2, get_goostring_length(*value) - 2,
+        return g_convert(value.c_str() + 2, value.size() - 2,
                          "UTF-8", "UTF-16LE", NULL, NULL, NULL);
     }
-    return value->toStr();
+    return value;
+}
+
+std::string getString(const GooString *value)
+{
+    if (value) {
+        return getString(value->toStr());
+    }
+    return "";
+}
+
+std::string getString(const GooString &value)
+{
+    return getString(value.toStr());
 }
 
 void pdf_debug_array(const Array *array, int depth, XRef *xref)
@@ -656,7 +680,11 @@
     } else if (obj->isArray()) {
         pdf_debug_array(obj->getArray(), depth, xref);
     } else if (obj->isString()) {
+#if POPPLER_CHECK_VERSION(26, 4, 0)
+        std::cout << " STR '" << obj->getString().c_str() << "'";
+#else
         std::cout << " STR '" << obj->getString()->getCString() << "'";
+#endif
     } else if (obj->isName()) {
         std::cout << " NAME '" << obj->getName() << "'";
     } else if (obj->isBool()) {
--- a/src/extension/internal/pdfinput/poppler-utils.h
+++ b/src/extension/internal/pdfinput/poppler-utils.h
@@ -83,7 +83,9 @@
 FontList getPdfFonts(std::shared_ptr<PDFDoc> pdf_doc);
 std::string getNameWithoutSubsetTag(std::string name);
 std::string getDictString(Dict *dict, const char *key);
+std::string getString(const std::string &value);
 std::string getString(const GooString *value);
+std::string getString(const GooString &value);
 std::string validateString(std::string const &in);
 
 // Replacate poppler FontDict
--- a/src/extension/internal/pdfinput/svg-builder.cpp
+++ b/src/extension/internal/pdfinput/svg-builder.cpp
@@ -392,7 +392,15 @@
     return svgConvertRGBToText(r, g, b);
 }
 
-std::string SvgBuilder::convertGfxColor(const GfxColor *color, GfxColorSpace *space)
+// for poppler < 26.06.0
+std::string SvgBuilder::convertGfxColor(const GfxColor *color, GfxColorSpace *space) {
+    if (!color) {
+        return "";
+    }
+    return convertGfxColor(*color, space);
+}
+
+std::string SvgBuilder::convertGfxColor(const GfxColor &color, GfxColorSpace *space)
 {
     std::string icc = "";
     switch (space->getMode()) {
@@ -412,14 +420,14 @@
     }
 
     GfxRGB rgb;
-    space->getRGB(color, &rgb);
+    space->_POPPLER_GET_RGB(color, &rgb);
     auto rgb_color = svgConvertGfxRGB(&rgb);
 
     if (!icc.empty()) {
         Inkscape::CSSOStringStream icc_color;
         icc_color << rgb_color << " icc-color(" << icc;
         for (int i = 0; i < space->getNComps(); ++i) {
-            icc_color << ", " << colToDbl((*color).c[i]);
+            icc_color << ", " << colToDbl((color).c[i]);
         }
         icc_color << ");";
         return icc_color.str();
@@ -1204,7 +1212,7 @@
 /**
  * \brief Adds a stop with the given properties to the gradient's representation
  */
-void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor *color, GfxColorSpace *space,
+void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor &color, GfxColorSpace *space,
                                     double opacity)
 {
     Inkscape::XML::Node *stop = _xml_doc->createElement("svg:stop");
@@ -1214,7 +1222,7 @@
     if (space->getMode() == csDeviceGray) {
         // This is a transparency mask.
         GfxRGB rgb;
-        space->getRGB(color, &rgb);
+        space->_POPPLER_GET_RGB(color, &rgb);
         double gray = (double)rgb.r / 65535.0;
         gray = CLAMP(gray, 0.0, 1.0);
         os_opacity << gray;
@@ -1255,8 +1263,8 @@
         if (!svgGetShadingColor(shading, 0.0, &stop1) || !svgGetShadingColor(shading, 1.0, &stop2)) {
             return false;
         } else {
-            _addStopToGradient(gradient, 0.0, &stop1, space, 1.0);
-            _addStopToGradient(gradient, 1.0, &stop2, space, 1.0);
+            _addStopToGradient(gradient, 0.0, stop1, space, 1.0);
+            _addStopToGradient(gradient, 1.0, stop2, space, 1.0);
         }
     } else if (type == _POPPLER_FUNCTION_TYPE_STITCHING) {
         auto stitchingFunc = static_cast<_POPPLER_CONST StitchingFunction*>(func);
@@ -1269,7 +1277,7 @@
         // Add stops from all the stitched functions
         GfxColor prev_color, color;
         svgGetShadingColor(shading, bounds[0], &prev_color);
-        _addStopToGradient(gradient, bounds[0], &prev_color, space, 1.0);
+        _addStopToGradient(gradient, bounds[0], prev_color, space, 1.0);
         for ( int i = 0 ; i < num_funcs ; i++ ) {
             svgGetShadingColor(shading, bounds[i + 1], &color);
             // Add stops
@@ -1279,14 +1287,14 @@
                     expE = (bounds[i + 1] - bounds[i])/expE;    // approximate exponential as a single straight line at x=1
                     if (encode[2*i] == 0) {    // normal sequence
                         auto offset = (bounds[i + 1] - expE) / max_bound;
-                        _addStopToGradient(gradient, offset, &prev_color, space, 1.0);
+                        _addStopToGradient(gradient, offset, prev_color, space, 1.0);
                     } else {                   // reflected sequence
                         auto offset = (bounds[i] + expE) / max_bound;
-                        _addStopToGradient(gradient, offset, &color, space, 1.0);
+                        _addStopToGradient(gradient, offset, color, space, 1.0);
                     }
                 }
             }
-            _addStopToGradient(gradient, bounds[i + 1] / max_bound, &color, space, 1.0);
+            _addStopToGradient(gradient, bounds[i + 1] / max_bound, color, space, 1.0);
             prev_color = color;
         }
     } else { // Unsupported function type
@@ -1386,7 +1394,7 @@
     sp_repr_css_set_property(_css_font, "font-variant", "normal");
 
     // Writing mode
-    if ( font->getWMode() == 0 ) {
+    if ( font->getWMode() == _POPPLER_WMODE_HORIZONTAL ) {
         sp_repr_css_set_property(_css_font, "writing-mode", "lr");
     } else {
         sp_repr_css_set_property(_css_font, "writing-mode", "tb");
@@ -1398,7 +1406,7 @@
  */
 void SvgBuilder::updateTextShift(GfxState *state, double shift) {
     double shift_value = -shift * 0.001 * fabs(state->getFontSize());
-    if (state->getFont()->getWMode()) {
+    if (state->getFont()->getWMode() != _POPPLER_WMODE_HORIZONTAL) {
         _text_position[1] += shift_value;
     } else {
         _text_position[0] += shift_value;
@@ -1452,7 +1460,7 @@
 
     // Text direction is a property of the <text> element.
     auto font = state->getFont();
-    if (font->getWMode() == 1) {
+    if (font->getWMode() == _POPPLER_WMODE_VERTICAL) {
         // Only set if vertical.
         auto css_text = sp_repr_css_attr_new();
         sp_repr_css_set_property(css_text, "writing-mode", "tb");
@@ -1546,8 +1554,8 @@
         bool output_tspan =
             next_it == _glyphs.end() ||
             next_it->style_changed   ||
-            (writing_mode == 0 && std::abs(glyph.text_position[1] - next_it->text_position[1]) > 0.1) ||
-            (writing_mode == 1 && std::abs(glyph.text_position[0] - next_it->text_position[0]) > 0.1);
+            (writing_mode == _POPPLER_WMODE_HORIZONTAL && std::abs(glyph.text_position[1] - next_it->text_position[1]) > 0.1) ||
+            (writing_mode == _POPPLER_WMODE_VERTICAL   && std::abs(glyph.text_position[0] - next_it->text_position[0]) > 0.1);
 
         if (output_tspan) {
 
--- a/src/extension/internal/pdfinput/svg-builder.h
+++ b/src/extension/internal/pdfinput/svg-builder.h
@@ -186,7 +186,7 @@
     // Pattern creation
     gchar *_createPattern(GfxPattern *pattern, GfxState *state, bool is_stroke=false);
     gchar *_createGradient(GfxShading *shading, const Geom::Affine pat_matrix, bool for_shading = false);
-    void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor *color, GfxColorSpace *space,
+    void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor &color, GfxColorSpace *space,
                             double opacity);
     bool _addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading,
                            _POPPLER_CONST Function *func);
@@ -239,6 +239,7 @@
     static bool _attrEqual(Inkscape::XML::Node *a, Inkscape::XML::Node *b, char const *attr);
 
     // Colors
+    std::string convertGfxColor(const GfxColor &color, GfxColorSpace *space);
     std::string convertGfxColor(const GfxColor *color, GfxColorSpace *space);
     std::string _getColorProfile(cmsHPROFILE hp);
 
--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
@@ -313,7 +313,11 @@
 #else
     GfxFontLoc *fontLoc;
 #endif
+#if POPPLER_CHECK_VERSION(26, 5, 0)
+    const char * const *enc;
+#else
     char **enc;
+#endif
     const char *name;
 #if POPPLER_CHECK_VERSION(25, 7, 0)
     std::unique_ptr<FoFiType1C> ff1c;
@@ -385,7 +389,11 @@
                 goto err2;
             }
 
+#if POPPLER_CHECK_VERSION(26, 5, 0)
+            enc = gfx8bit->getEncoding().data();
+#else
             enc = gfx8bit->getEncoding();
+#endif
 
             codeToGID.resize(256);
             for (i = 0; i < 256; ++i) {
@@ -677,7 +685,7 @@
 #endif
 
     std::vector<int> codeToGID;
-    char *name;
+    const char *name;
 
     Dict *charProcs = gfx8bit->getCharProcs();
     Ref ref = *gfxFont->getID();
@@ -694,13 +702,17 @@
 
     cairo_font_face_set_user_data(font_face, &type3_font_key, (void *)info, _free_type3_font_info);
 
+#if POPPLER_CHECK_VERSION(26, 5, 0)
+    const char * const *enc = gfx8bit->getEncoding().data();
+#else
     char **enc = gfx8bit->getEncoding();
+#endif
     codeToGID.resize(256);
     for (int i = 0; i < 256; ++i) {
         codeToGID[i] = 0;
         if (charProcs && (name = enc[i])) {
             for (int j = 0; j < charProcs->getLength(); j++) {
-                if (strcmp(name, charProcs->getKey(j)) == 0) {
+                if (std::string(charProcs->getKey(j)).compare(name) == 0) {
                     codeToGID[i] = j;
                 }
             }

--===============7317655412774112155==--

------------=_1785770583-2815255-0
Content-Type: message/rfc822
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

Received: (at 1143108-close) by bugs.debian.org; 3 Aug 2026 15:20:56 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
	(2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-113.1 required=4.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FVGT_m_MULTI_ODD,HAS_BUG_NUMBER,
	MD5_SHA1_SUM,PGPSIGNATURE,RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS,
	USER_IN_DKIM_WELCOMELIST autolearn=ham autolearn_force=no
	version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 12; hammy, 150; neutral, 226; spammy,
	0. spammytokens: hammytokens:0.000-+--HX-Debian:DAK,
	0.000-+--H*rp:D*ftp-master.debian.org, 0.000-+--HX-DAK:process-upload,
	0.000-+--UD:debian.tar.xz, 0.000-+--H*r:sk:fasolo.
Return-path: <[email protected]>
Received: from mitropoulos.debian.org ([2001:648:2ffc:deb:216:61ff:fe9d:958d]:42390)
	by buxtehude.debian.org with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
	(Exim 4.96)
	(envelope-from <[email protected]>)
	id 1wquTI-00Bo9m-16
	for [email protected];
	Mon, 03 Aug 2026 15:20:56 +0000
Received: via submission
	from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=fasolo.debian.org,[email protected] (verified)
	by mitropoulos.debian.org with esmtps (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
	(Exim 4.96)
	(envelope-from <[email protected]>)
	id 1wquTG-00Gxn9-29
	for [email protected];
	Mon, 03 Aug 2026 15:20:54 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=ftp-master.debian.org; s=smtpauto.fasolo; h=Date:Message-Id:Content-Type:
	Subject:MIME-Version:To:Reply-To:From:Cc:Content-Transfer-Encoding:Content-ID
	:Content-Description:In-Reply-To:References;
	bh=MyapCnmKKSGVTJ7mqq4H3ZZR+C2Yu6ZpNIksSMvPnhw=; b=MnCjcQclMQLLqDd6/dUePrGp6+
	nZ4K9pnIxZSI9ec1adWpyZv+8Cmxrcyzh02wr1ozSmA10xjPuTIMzfFWZjOOGrZkbRsL1q0etR3qw
	d/c0fl4UmL7JdOK9OaJnFaG3sQGCfi4tvOCTcWjnllPEpdN18C3srBHVwqlTRmjH5iD8w0wb5qejy
	G+q9tXoFHcGqjXzerjYAzwvwylx4N07l69rlcLL0vpmVX37VRF9MnDvAxEFEB35QElpRnjzhJ21hz
	HIA/0R8QCPx0as2AYvQf5OTyHSS8rdBr2/VQ/yzsFMleQO241o0D47aanRwelFRbrcxuzBOKaK3tg
	imgMo1mw==;
Received: from dak by fasolo.debian.org with local (Exim 4.98.2)
	(envelope-from <[email protected]>)
	id 1wquTF-00000006mlm-26u4;
	Mon, 03 Aug 2026 15:20:53 +0000
From: Debian FTP Masters <[email protected]>
Reply-To: =?utf-8?q?Jeremy_B=C3=ADcha?= <[email protected]>
To: [email protected]
X-DAK: dak process-upload
X-Debian: DAK
X-Debian-Package: inkscape
Debian: DAK
Debian-Changes: inkscape_1.4.3-2_source.changes
Debian-Source: inkscape
Debian-Version: 1.4.3-2
Debian-Architecture: source
Debian-Suite: unstable
Debian-Archive-Action: accept
MIME-Version: 1.0
Subject: Bug#1143108: fixed in inkscape 1.4.3-2
Content-Type: multipart/signed; micalg="pgp-sha256";
 protocol="application/pgp-signature";
 boundary="===============2241367919607079977=="
Message-Id: <[email protected]>
Date: Mon, 03 Aug 2026 15:20:53 +0000

--===============2241367919607079977==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

Source: inkscape
Source-Version: 1.4.3-2
Done: Jeremy B=C3=ADcha <[email protected]>

We believe that the bug you reported is fixed in the latest version of
inkscape, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Jeremy B=C3=ADcha <[email protected]> (supplier of updated inkscape package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Mon, 03 Aug 2026 16:58:15 +0200
Source: inkscape
Built-For-Profiles: derivative.ubuntu noudeb
Architecture: source
Version: 1.4.3-2
Distribution: unstable
Urgency: medium
Maintainer: Debian Multimedia Maintainers <[email protected]>
Changed-By: Jeremy B=C3=ADcha <[email protected]>
Closes: 1133504 1136171 1143108
Changes:
 inkscape (1.4.3-2) unstable; urgency=3Dmedium
 .
   * Team upload
 .
   [ Jeremy B=C3=ADcha ]
   * Cherry-pick patch to fix build with gcc-16 (Closes: #1133504)
   * Remove Build-Depends: libdbus-1-dev, libdbus-glib-1-dev (Closes: #113617=
1)
   * Update debhelper compat to 14
 .
   [ Nadzeya Hutsko ]
   * Cherry-pick patches to fix build with poppler 26.07 (Closes: #1143108)
Checksums-Sha1:
 e1e27f7a3801820d9013feee303a6fcec4a4cd47 3004 inkscape_1.4.3-2.dsc
 1074fb24a6c6b034acc209b28c496718a5bbb2cf 42660 inkscape_1.4.3-2.debian.tar.xz
 e43f3382e52b3d5626cf7dce996ff14edf5dec97 7208 inkscape_1.4.3-2_source.buildi=
nfo
Checksums-Sha256:
 3b6d71cb52ccfde01bbd59fac2403409a3454618adb6a3307caf24e31cc7b582 3004 inksca=
pe_1.4.3-2.dsc
 b5d67d31aa2833a0d03106e6496ecf4b07b12b8052e2c1a044b5a93653b7d64f 42660 inksc=
ape_1.4.3-2.debian.tar.xz
 faa54f11e338aa1285aa2e622d4bf8afea33ef907570ba37796d98c037e51aea 7208 inksca=
pe_1.4.3-2_source.buildinfo
Files:
 3ce230cd29006e6d62874aa3a0b76b5a 3004 graphics optional inkscape_1.4.3-2.dsc
 a17d5798f54afadeb37c333983fc4fb6 42660 graphics optional inkscape_1.4.3-2.de=
bian.tar.xz
 a248571865181c18853fd6081234eb2b 7208 graphics optional inkscape_1.4.3-2_sou=
rce.buildinfo

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEETQvhLw5HdtiqzpaW5mx3Wuv+bH0FAmpwrQEACgkQ5mx3Wuv+
bH1D+A//aNg4Zdgx9hd0Kp507im69rYAPr7v+lg+l780nD11Lz8GRYcCAPz6pSeC
GHf3vzVpB63175f4P23sQt9CqVQYKdbOpiboXt94kRa+EabNyQLQIYXY6ogbh/nZ
8IqDblF2Vv2pPemJfdtwlil15ap8kqblkda9+xM5n0qwI/8GJTPnugBSKp/xDjsI
5lTsdoeASqJiGLtu3x9S450D/swx/RN3UVRRT6hEaiMqdXMDTaYp41RG6ZHp8qqT
Z7VT8gH1oJJz3qz1dYCvTPYixRTcQ8Bq9hMqBJe8IOPR1LPaK6LURf0ZQMBNRPgu
Py0UGg4VjQ++zr3btdhnGdtKmVLkbjBPwX82JjKfSfFRfMFqMyGq6UySzLDKISww
AEgoJ8wkTt3aq+s/IsDo7aPGvrACKJ9434fU/G22sYwqwAXas0Tl/K2W29WxTQpO
zx4+TGGa5EXJC9u0J55aJFURTJs0kp6gpwUb4Z6uZhd/Vm61ivqgIUKqEpmSmKTq
Ky4xAt4tvt22Te2khIm14+ILo+6mEcT2Iw1E7XQfCrW2a4N+wWg3AJgGqPqjuXct
oxHfXvfGq35UHUwvZq2MWBUmXncabW6Wi5tli30PeH20qhE9Dj4anloqVWPxdN4F
Uwmt1mfHZgS52PxiRGeHyx+iJ1D5JQm1B4YmrIx6gGNB4EjiN94=3D
=3Dr/Tq
-----END PGP SIGNATURE-----


--===============2241367919607079977==
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTziqJOuF8J+ZI8pJSb9qggYcy5IQUCanCx1QAKCRCb9qggYcy5
IZ/WAQCsnpR7IE4+hgM9+E8EjpN1u7vdOeFGsg0ukdRnLyl0BQEA5pCRe9QwnhAE
woMoNJnZ/kIQVb5tyRf8VABqLIvgAwY=
=8Wq0
-----END PGP SIGNATURE-----

--===============2241367919607079977==--
------------=_1785770583-2815255-0--