{"id":2231682,"url":"http://patchwork.ozlabs.org/api/patches/2231682/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/patch/20260501062316.1942112-10-bernd@kuhls.net/","project":{"id":27,"url":"http://patchwork.ozlabs.org/api/projects/27/?format=json","name":"Buildroot development","link_name":"buildroot","list_id":"buildroot.buildroot.org","list_email":"buildroot@buildroot.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260501062316.1942112-10-bernd@kuhls.net>","list_archive_url":null,"date":"2026-05-01T06:23:02","name":"[v3,09/21] package/cups-filters: fix build against qpdf 12","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"35944a5e0b6d76935e7efa1ba0c2733d503aac5b","submitter":{"id":86624,"url":"http://patchwork.ozlabs.org/api/people/86624/?format=json","name":"Bernd Kuhls","email":"bernd@kuhls.net"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/buildroot/patch/20260501062316.1942112-10-bernd@kuhls.net/mbox/","series":[{"id":502425,"url":"http://patchwork.ozlabs.org/api/series/502425/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/list/?series=502425","date":"2026-05-01T06:22:53","name":"package/gcc: add version 16.1.0","version":3,"mbox":"http://patchwork.ozlabs.org/series/502425/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2231682/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2231682/checks/","tags":{},"related":[],"headers":{"Return-Path":"<buildroot-bounces@buildroot.org>","X-Original-To":["incoming-buildroot@patchwork.ozlabs.org","buildroot@buildroot.org"],"Delivered-To":["patchwork-incoming-buildroot@legolas.ozlabs.org","buildroot@buildroot.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=buildroot.org header.i=@buildroot.org\n header.a=rsa-sha256 header.s=default header.b=ePJmvd6/;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=buildroot.org\n (client-ip=2605:bc80:3010::138; helo=smtp1.osuosl.org;\n envelope-from=buildroot-bounces@buildroot.org; receiver=patchwork.ozlabs.org)"],"Received":["from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6Ld14BBPz1y04\n\tfor <incoming-buildroot@patchwork.ozlabs.org>;\n Fri, 01 May 2026 16:25:25 +1000 (AEST)","from localhost (localhost [127.0.0.1])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id E7758852BA;\n\tFri,  1 May 2026 06:25:23 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id EdAG61Bw87bZ; Fri,  1 May 2026 06:25:22 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp1.osuosl.org (Postfix) with ESMTP id BB0BA8531D;\n\tFri,  1 May 2026 06:25:22 +0000 (UTC)","from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n by lists1.osuosl.org (Postfix) with ESMTP id 94396204\n for <buildroot@buildroot.org>; Fri,  1 May 2026 06:25:21 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp4.osuosl.org (Postfix) with ESMTP id 868D341249\n for <buildroot@buildroot.org>; Fri,  1 May 2026 06:25:21 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id bu4DQDtAMEH8 for <buildroot@buildroot.org>;\n Fri,  1 May 2026 06:25:20 +0000 (UTC)","from dd20012.kasserver.com (dd20012.kasserver.com [85.13.140.57])\n by smtp4.osuosl.org (Postfix) with ESMTPS id 2EC564122B\n for <buildroot@buildroot.org>; Fri,  1 May 2026 06:25:20 +0000 (UTC)","from fli4l.lan.fli4l (p4fd6c2eb.dip0.t-ipconnect.de\n [79.214.194.235])\n by dd20012.kasserver.com (Postfix) with ESMTPSA id CD036A4C2BD0;\n Fri,  1 May 2026 08:23:27 +0200 (CEST)","from bruckner.lan.fli4l ([192.168.1.1]:38120)\n by fli4l.lan.fli4l with esmtp (Exim 4.99.2)\n (envelope-from <bernd@kuhls.net>) id 1wIhHS-000000007tD-2DnX;\n Fri, 01 May 2026 06:23:18 +0000"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org;\n receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp1.osuosl.org BB0BA8531D","OpenDKIM Filter v2.11.0 smtp4.osuosl.org 2EC564122B"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org;\n\ts=default; t=1777616722;\n\tbh=UJw4a5s3cCJiQVZstHlO2MTakQLxoz7Qtj5BjtUBgpo=;\n\th=From:To:Date:In-Reply-To:References:Subject:List-Id:\n\t List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe:\n\t Cc:From;\n\tb=ePJmvd6/tJ1+p1Op8mlvQMeNxmihyzCYtZHMmW6/I1HlHDeiNiCVxnBjEytV7zSF4\n\t PzhNgqCUShdWGu1dA1BLFvffZdrd518D9bFZc9WuKovm2fO1xUtxrSQkNAVTN0eGYV\n\t X2y7ITLeTjhgwXA4qz3qfoY1Q+GyJmLhZmpyxJjxLhNP+Nyg1yN2IZmIXTTstNaCaM\n\t dhjv/gF5HXHiliR/xJ/Ca3VZjzKFM6rhSQtYHB87qClmBVASh9mOL3NwkPpr/THTXd\n\t qfUTZLbOIlYX1KWI6ainaMoSlm5R0LuEXVk7LUKwEmx6Jt3iz+Uc1D+VK8Gn0l+Pq2\n\t Zf0lFTW+P7UBg==","Received-SPF":"Pass (mailfrom) identity=mailfrom; client-ip=85.13.140.57;\n helo=dd20012.kasserver.com; envelope-from=bernd@kuhls.net;\n receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp4.osuosl.org 2EC564122B","From":"Bernd Kuhls <bernd@kuhls.net>","To":"buildroot@buildroot.org","Date":"Fri,  1 May 2026 08:23:02 +0200","Message-ID":"<20260501062316.1942112-10-bernd@kuhls.net>","X-Mailer":"git-send-email 2.47.3","In-Reply-To":"<20260501062316.1942112-1-bernd@kuhls.net>","References":"<20260501062316.1942112-1-bernd@kuhls.net>","MIME-Version":"1.0","X-Spamd-Bar":"-","X-Mailman-Original-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=kuhls.net;\n s=kas202511301023; t=1777616607;\n bh=L3GiGRnZwx3a8F8WfaAVrVhOvAmkC4bALV5pxraCTDE=;\n h=From:To:Cc:Subject:Date:In-Reply-To:From;\n b=gFnHkYVDEuoRuXjraRDE5Ww+iL2fxM0/na9qL1rdDPKoDt23b88PdB51wD02Ol7Vr\n OQwXWRYF9A+YvCGhP3QiwbxnMozAys6DdqJ7rgh774fUspko/PLs6O6Eg9W9RVOWO+\n Xv7RiLX/AvHKjOKInlM9HEA/IFEwTHc4RXjG4hRtCinn5tx274plPCDQG9mHbzMCWk\n FXOZkJ8L9xpY4Ov8I3IhgjYZWtemfq+TNeRWSPpdZaJxsaoYuM3LduIbCEJmFfpRao\n Th/WSOByZRkOrTfXRDDCo5pUBPdWyQkzs2IwMUqQvZ6ZM+DH5JvGBhTDCQubSAq7qx\n pOfXUK167il0Q==","X-Mailman-Original-Authentication-Results":["smtp4.osuosl.org;\n dmarc=pass (p=none dis=none)\n header.from=kuhls.net","smtp4.osuosl.org;\n dkim=pass (2048-bit key) header.d=kuhls.net header.i=@kuhls.net\n header.a=rsa-sha256 header.s=kas202511301023 header.b=gFnHkYVD"],"Subject":"[Buildroot] [PATCH v3 09/21] package/cups-filters: fix build\n against qpdf 12","X-BeenThere":"buildroot@buildroot.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Discussion and development of buildroot <buildroot.buildroot.org>","List-Unsubscribe":"<https://lists.buildroot.org/mailman/options/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=unsubscribe>","List-Archive":"<http://lists.buildroot.org/pipermail/buildroot/>","List-Post":"<mailto:buildroot@buildroot.org>","List-Help":"<mailto:buildroot-request@buildroot.org?subject=help>","List-Subscribe":"<https://lists.buildroot.org/mailman/listinfo/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=subscribe>","Cc":"Zoltan Gyarmati <mr.zoltan.gyarmati@gmail.com>,\n Tudor Holton <buildroot@tudorholton.com>,\n Fabrice Fontaine <fontaine.fabrice@gmail.com>,\n Angelo Compagnucci <angelo.compagnucci@gmail.com>,\n Olivier Schonken <olivier.schonken@gmail.com>,\n Thomas Petazzoni <thomas.petazzoni@bootlin.com>,\n Romain Naour <romain.naour@gmail.com>,\n Giulio Benetti <giulio.benetti@benettiengineering.com>","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Errors-To":"buildroot-bounces@buildroot.org","Sender":"\"buildroot\" <buildroot-bounces@buildroot.org>"},"content":"This patch adds fixes for cups-filters so it can be build with newer\nversions of qpdf that made changes to PointerHolder:\nhttps://github.com/qpdf/qpdf/blob/v12.3.2/manual/design.rst#smart-pointers\n\nBuild-tested using this defconfig:\n\nBR2_PACKAGE_CUPS=y\nBR2_PACKAGE_CUPS_FILTERS=y\n\n                             arm-aarch64 [ 1/32]: OK\n                   bootlin-aarch64-glibc [ 2/32]: OK\n               bootlin-aarch64-glibc-old [ 3/32]: SKIPPED\n               bootlin-arcle-hs38-uclibc [ 4/32]: OK\n                    bootlin-armv5-uclibc [ 5/32]: OK\n                     bootlin-armv7-glibc [ 6/32]: OK\n                   bootlin-armv7m-uclibc [ 7/32]: SKIPPED\n                      bootlin-armv7-musl [ 8/32]: OK\n                bootlin-m68k-5208-uclibc [ 9/32]: SKIPPED\n               bootlin-m68k-68040-uclibc [10/32]: OK\n             bootlin-microblazeel-uclibc [11/32]: OK\n                  bootlin-mips64el-glibc [12/32]: OK\n                bootlin-mipsel32r6-glibc [13/32]: OK\n                   bootlin-mipsel-uclibc [14/32]: OK\n                 bootlin-openrisc-uclibc [15/32]: OK\n        bootlin-powerpc64le-power8-glibc [16/32]: OK\n           bootlin-powerpc-e500mc-uclibc [17/32]: OK\n                   bootlin-riscv32-glibc [18/32]: OK\n                   bootlin-riscv64-glibc [19/32]: OK\n                    bootlin-riscv64-musl [20/32]: OK\n                 bootlin-s390x-z13-glibc [21/32]: OK\n                      bootlin-sh4-uclibc [22/32]: OK\n                   bootlin-sparc64-glibc [23/32]: OK\n                    bootlin-sparc-uclibc [24/32]: OK\n                    bootlin-x86-64-glibc [25/32]: OK\n                     bootlin-x86-64-musl [26/32]: OK\n                   bootlin-x86-64-uclibc [27/32]: OK\n                   bootlin-x86-i686-musl [28/32]: OK\n                   bootlin-xtensa-uclibc [29/32]: OK\n                            br-arm-basic [30/32]: SKIPPED\n                    br-arm-full-nothread [31/32]: SKIPPED\n                      br-arm-full-static [32/32]: SKIPPED\n\n32 builds, 6 skipped, 0 build failed, 0 legal-info failed, 0 show-info failed\n\nThis solution avoids[1] a version bump of this package while keeping\ncompatibility with the newest version of qpdf. The bump of qpdf is\nneeded to fix build errors with gcc 16.x.\n\n[1] https://lists.buildroot.org/pipermail/buildroot/2025-August/784931.html\nThomas: \"which means duplicating all the crazy dependencies of\nlibcupsfilters yes :/\"\n\nSigned-off-by: Bernd Kuhls <bernd@kuhls.net>\n---\n ...ilters-Fixed-building-with-QPDF-11.x.patch |  57 ++++++\n ...ated-code-to-be-built-with-QPDF-12.x.patch | 165 ++++++++++++++++++\n package/cups-filters/cups-filters.mk          |   4 +\n 3 files changed, 226 insertions(+)\n create mode 100644 package/cups-filters/0003-libcupsfilters-Fixed-building-with-QPDF-11.x.patch\n create mode 100644 package/cups-filters/0004-Updated-code-to-be-built-with-QPDF-12.x.patch","diff":"diff --git a/package/cups-filters/0003-libcupsfilters-Fixed-building-with-QPDF-11.x.patch b/package/cups-filters/0003-libcupsfilters-Fixed-building-with-QPDF-11.x.patch\nnew file mode 100644\nindex 0000000000..f4dc04d3cf\n--- /dev/null\n+++ b/package/cups-filters/0003-libcupsfilters-Fixed-building-with-QPDF-11.x.patch\n@@ -0,0 +1,57 @@\n+From 0cce0968980e8fdd9053cba436a66246b2303a84 Mon Sep 17 00:00:00 2001\n+From: Till Kamppeter <till.kamppeter@gmail.com>\n+Date: Wed, 6 Dec 2023 22:56:41 +0100\n+Subject: [PATCH] libcupsfilters: Fixed building with QPDF 11.x\n+MIME-Version: 1.0\n+Content-Type: text/plain; charset=UTF-8\n+Content-Transfer-Encoding: 8bit\n+\n+Set CXXFLAGS=\"-DPOINTERHOLDER_TRANSITION=0\" to silence QPDF warnings\n+\n+QPDF 11 issues warnings about deprecated \"PointerHolder\", even if the\n+code does not use \"PointerHolder\" any more. This compiler macro\n+suppresses the warnings.\n+\n+See /usr/include/qpdf/PointerHolder.hh of QPDF 11.\n+\n+Backported from libcupsfilters (2.x), commit 076a994fce\n+\n+Added \"-std=c++17\" C++ compiler flag (PR#18)\n+\n+Needed as otherwise the QPDF.hh file of QPDF 11 causes the error\n+\n+    ‘std::string_view’ has not been declared\n+\n+Adding the \"-std=c++17\" to CXXFLAGS fixes this. See also\n+\n+    https://stackoverflow.com/questions/58295334/error-stdstring-view-has-no\n+t-been-declared\n+\n+Backported from libcupsfilters (2.x), commit e1daf27c59\n+\n+Upstream: https://github.com/OpenPrinting/cups-filters/commit/0cce0968980e8fdd9053cba436a66246b2303a84\n+\n+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>\n+---\n+ configure.ac | 5 ++++-\n+ 1 file changed, 4 insertions(+), 1 deletion(-)\n+\n+diff --git a/configure.ac b/configure.ac\n+index 083aecb83..f293e803b 100644\n+--- a/configure.ac\n++++ b/configure.ac\n+@@ -837,7 +837,10 @@ AS_IF([test x\"$GCC\" = \"xyes\"], [\n+ \tCXXFLAGS=\"$CXXFLAGS -Wall \" # -Weffc++\" # TODO: enable when it does not print 1MB of warnings\n+ ])\n+ CFLAGS=\"$CFLAGS -D_GNU_SOURCE\"\n+-CXXFLAGS=\"$CXXFLAGS -D_GNU_SOURCE\"\n++CXXFLAGS=\"$CXXFLAGS -D_GNU_SOURCE -DPOINTERHOLDER_TRANSITION=0\"\n++#                                   ^^ Silence deprecation warnings of QPDF 11\n++#                                      See /usr/include/qpdf/PointerHolder.hh\n++CXXFLAGS=\"$CXXFLAGS -std=c++17\" # Needed to build with current QPDF (11.x)\n+ \n+ # ==========================\n+ # Braille embossing/liblouis\n+-- \n+2.47.3\n+\ndiff --git a/package/cups-filters/0004-Updated-code-to-be-built-with-QPDF-12.x.patch b/package/cups-filters/0004-Updated-code-to-be-built-with-QPDF-12.x.patch\nnew file mode 100644\nindex 0000000000..8996a6afce\n--- /dev/null\n+++ b/package/cups-filters/0004-Updated-code-to-be-built-with-QPDF-12.x.patch\n@@ -0,0 +1,165 @@\n+From 7b6e46ea6237763104bf2a22eca66ba92a6b71a4 Mon Sep 17 00:00:00 2001\n+From: Till Kamppeter <till.kamppeter@gmail.com>\n+Date: Wed, 12 Nov 2025 16:10:51 +0100\n+Subject: [PATCH] Updated code to be built with QPDF 12.x\n+\n+- Set `#define POINTERHOLDER_TRANSITION 3`\n+- Explicitly `#include <qpdf/PointerHolder.hh>`\n+- `ph = (PointerHolder<Buffer>) new Buffer(buff, profile_size);` in `rastertopdf.cpp`\n+- Removed `-DPOINTERHOLDER_TRANSITION=0` from `CXXFLAGS` in `configure.ac`\n+- Replaced all `replaceOrRemoveKey()` by `replaceKey()`\n+\n+Upstream: https://github.com/OpenPrinting/cups-filters/commit/7b6e46ea6237763104bf2a22eca66ba92a6b71a4\n+\n+Signed-off-by: Bernd Kuhls <bernd@kuhls.net>\n+---\n+ configure.ac                               |  3 ---\n+ filter/pdf.cxx                             |  2 ++\n+ filter/pdftopdf/qpdf_pdftopdf_processor.cc | 18 +++++++++---------\n+ filter/pdftopdf/qpdf_xobject.cc            |  2 ++\n+ filter/rastertopdf.cpp                     |  4 +++-\n+ filter/urftopdf.cpp                        |  2 ++\n+ 6 files changed, 18 insertions(+), 13 deletions(-)\n+\n+diff --git a/configure.ac b/configure.ac\n+index 32180d0da..702b58a0a 100644\n+--- a/configure.ac\n++++ b/configure.ac\n+@@ -793,9 +793,6 @@ AS_IF([test x\"$GCC\" = \"xyes\"], [\n+ \tCXXFLAGS=\"$CXXFLAGS -Wall \" # -Weffc++\" # TODO: enable when it does not print 1MB of warnings\n+ ])\n+ CFLAGS=\"$CFLAGS -D_GNU_SOURCE\"\n+-CXXFLAGS=\"$CXXFLAGS -D_GNU_SOURCE -DPOINTERHOLDER_TRANSITION=0\"\n+-#                                   ^^ Silence deprecation warnings of QPDF 11\n+-#                                      See /usr/include/qpdf/PointerHolder.hh\n+ CXXFLAGS=\"$CXXFLAGS -std=c++17\" # Needed to build with current QPDF (11.x)\n+ \n+ # ==========================\n+diff --git a/filter/pdf.cxx b/filter/pdf.cxx\n+index 68b1af912..7d592dc95 100644\n+--- a/filter/pdf.cxx\n++++ b/filter/pdf.cxx\n+@@ -21,6 +21,8 @@\n+ #include <vector>\n+ #include <string>\n+ #include <cstring>\n++#define POINTERHOLDER_TRANSITION 3\n++#include <qpdf/PointerHolder.hh>\n+ #include <qpdf/QPDF.hh>\n+ #include <qpdf/QPDFObjectHandle.hh>\n+ #include <qpdf/QPDFWriter.hh>\n+diff --git a/filter/pdftopdf/qpdf_pdftopdf_processor.cc b/filter/pdftopdf/qpdf_pdftopdf_processor.cc\n+index beffc2423..3c21a6512 100644\n+--- a/filter/pdftopdf/qpdf_pdftopdf_processor.cc\n++++ b/filter/pdftopdf/qpdf_pdftopdf_processor.cc\n+@@ -83,10 +83,10 @@ QPDFObjectHandle QPDF_PDFTOPDF_PageHandle::get() // {{{\n+     page.getKey(\"/Resources\").replaceKey(\"/XObject\",QPDFObjectHandle::newDictionary(xobjs));\n+     content.append(\"Q\\n\");\n+     page.getKey(\"/Contents\").replaceStreamData(content,QPDFObjectHandle::newNull(),QPDFObjectHandle::newNull());\n+-    page.replaceOrRemoveKey(\"/Rotate\",makeRotate(rotation));\n++    page.replaceKey(\"/Rotate\",makeRotate(rotation));\n+   } else {\n+     Rotation rot=getRotate(page)+rotation;\n+-    page.replaceOrRemoveKey(\"/Rotate\",makeRotate(rot));\n++    page.replaceKey(\"/Rotate\",makeRotate(rot));\n+   }\n+   page=QPDFObjectHandle(); // i.e. uninitialized\n+   return ret;\n+@@ -181,9 +181,9 @@ Rotation QPDF_PDFTOPDF_PageHandle::crop(const PageRect &cropRect,Rotation orient\n+   page.assertInitialized();\n+   Rotation save_rotate = getRotate(page);\n+   if(orientation==ROT_0||orientation==ROT_180)\n+-    page.replaceOrRemoveKey(\"/Rotate\",makeRotate(ROT_90));\n++    page.replaceKey(\"/Rotate\",makeRotate(ROT_90));\n+   else\n+-    page.replaceOrRemoveKey(\"/Rotate\",makeRotate(ROT_0));\n++    page.replaceKey(\"/Rotate\",makeRotate(ROT_0));\n+ \n+   PageRect currpage= getBoxAsRect(getTrimBox(page));\n+   double width = currpage.right-currpage.left;\n+@@ -242,7 +242,7 @@ Rotation QPDF_PDFTOPDF_PageHandle::crop(const PageRect &cropRect,Rotation orient\n+   //Cropping.\n+   // TODO: Borders are covered by the image. buffer space?\n+   page.replaceKey(\"/TrimBox\",makeBox(currpage.left,currpage.bottom,currpage.right,currpage.top));\n+-  page.replaceOrRemoveKey(\"/Rotate\",makeRotate(save_rotate));\n++  page.replaceKey(\"/Rotate\",makeRotate(save_rotate));\n+   return getRotate(page);\n+ }\n+ \n+@@ -251,14 +251,14 @@ bool QPDF_PDFTOPDF_PageHandle::is_landscape(Rotation orientation)\n+   page.assertInitialized();\n+   Rotation save_rotate = getRotate(page);\n+   if(orientation==ROT_0||orientation==ROT_180)\n+-    page.replaceOrRemoveKey(\"/Rotate\",makeRotate(ROT_90));\n++    page.replaceKey(\"/Rotate\",makeRotate(ROT_90));\n+   else\n+-    page.replaceOrRemoveKey(\"/Rotate\",makeRotate(ROT_0));\n++    page.replaceKey(\"/Rotate\",makeRotate(ROT_0));\n+ \n+   PageRect currpage= getBoxAsRect(getTrimBox(page));\n+   double width = currpage.right-currpage.left;\n+   double height = currpage.top-currpage.bottom;\n+-  page.replaceOrRemoveKey(\"/Rotate\",makeRotate(save_rotate));\n++  page.replaceKey(\"/Rotate\",makeRotate(save_rotate));\n+   if(width>height)\n+     return true;\n+   return false;\n+@@ -665,7 +665,7 @@ void QPDF_PDFTOPDF_Processor::autoRotateAll(bool dst_lscape,Rotation normal_land\n+       // TODO? other rotation direction, e.g. if (src_rot==ROT_0)&&(param.orientation==ROT_270) ... etc.\n+       // rotation=ROT_270;\n+ \n+-      page.replaceOrRemoveKey(\"/Rotate\",makeRotate(src_rot+rotation));\n++      page.replaceKey(\"/Rotate\",makeRotate(src_rot+rotation));\n+     }\n+   }\n+ }\n+diff --git a/filter/pdftopdf/qpdf_xobject.cc b/filter/pdftopdf/qpdf_xobject.cc\n+index 12732f1e9..2550bdd4f 100644\n+--- a/filter/pdftopdf/qpdf_xobject.cc\n++++ b/filter/pdftopdf/qpdf_xobject.cc\n+@@ -1,5 +1,7 @@\n+ #include \"qpdf_xobject.h\"\n+ //#include <qpdf/Types.h>\n++#define POINTERHOLDER_TRANSITION 3\n++#include <qpdf/PointerHolder.hh>\n+ #include <qpdf/QPDF.hh>\n+ #include <qpdf/Pl_Discard.hh>\n+ #include <qpdf/Pl_Count.hh>\n+diff --git a/filter/rastertopdf.cpp b/filter/rastertopdf.cpp\n+index ad5dd34c5..6a1aa218f 100644\n+--- a/filter/rastertopdf.cpp\n++++ b/filter/rastertopdf.cpp\n+@@ -39,6 +39,8 @@\n+ #include <arpa/inet.h>   // ntohl\n+ \n+ #include <vector>\n++#define POINTERHOLDER_TRANSITION 3\n++#include <qpdf/PointerHolder.hh>\n+ #include <qpdf/QPDF.hh>\n+ #include <qpdf/QPDFWriter.hh>\n+ #include <qpdf/QUtil.hh>\n+@@ -481,7 +483,7 @@ QPDFObjectHandle embedIccProfile(QPDF &pdf)\n+     cmsSaveProfileToMem(colorProfile, buff, &profile_size);\n+ \n+     // Write ICC profile buffer into PDF\n+-    ph = new Buffer(buff, profile_size);  \n++    ph = (PointerHolder<Buffer>) new Buffer(buff, profile_size);\n+     iccstream = QPDFObjectHandle::newStream(&pdf, ph);\n+     iccstream.replaceDict(QPDFObjectHandle::newDictionary(streamdict));\n+ \n+diff --git a/filter/urftopdf.cpp b/filter/urftopdf.cpp\n+index 4e7f6535a..e5c9f1f33 100644\n+--- a/filter/urftopdf.cpp\n++++ b/filter/urftopdf.cpp\n+@@ -32,6 +32,8 @@\n+ #include <arpa/inet.h>   // ntohl\n+ \n+ #include <vector>\n++#define POINTERHOLDER_TRANSITION 3\n++#include <qpdf/PointerHolder.hh>\n+ #include <qpdf/QPDF.hh>\n+ #include <qpdf/QPDFWriter.hh>\n+ #include <qpdf/QUtil.hh>\n+-- \n+2.47.3\n+\ndiff --git a/package/cups-filters/cups-filters.mk b/package/cups-filters/cups-filters.mk\nindex 6bc4610376..eaad301c6d 100644\n--- a/package/cups-filters/cups-filters.mk\n+++ b/package/cups-filters/cups-filters.mk\n@@ -10,6 +10,10 @@ CUPS_FILTERS_LICENSE = GPL-2.0, GPL-2.0+, GPL-3.0, GPL-3.0+, LGPL-2, LGPL-2.1+,\n CUPS_FILTERS_LICENSE_FILES = COPYING\n CUPS_FILTERS_CPE_ID_VENDOR = linuxfoundation\n \n+# 0003-libcupsfilters-Fixed-building-with-QPDF-11.x.patch\n+# 0004-Updated-code-to-be-built-with-QPDF-12.x.patch\n+CUPS_FILTERS_AUTORECONF = YES\n+\n # 0001-beh-backend-Use-execv-instead-of-system-CVE-2023-24805.patch\n CUPS_FILTERS_IGNORE_CVES += CVE-2023-24805\n \n","prefixes":["v3","09/21"]}