commit a0f064e8393d0f9dc62d630f08d2c961b37c5a27
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Apr 2 00:26:27 2025 +0200

    poppler 25.04.0

 CMakeLists.txt     |  6 +++---
 NEWS               | 21 +++++++++++++++++++++
 cpp/CMakeLists.txt |  2 +-
 cpp/Doxyfile       |  2 +-
 qt5/src/Doxyfile   |  2 +-
 qt6/src/Doxyfile   |  2 +-
 6 files changed, 28 insertions(+), 7 deletions(-)

commit f1b9c830f145a0042e853d6462b2f9ca4016c669
Author: Juraj Šarinay <juraj@sarinay.com>
Date:   Thu Mar 6 02:02:56 2025 +0100

    Properly verify adbe.pkcs7.sha1 signatures.

    For signatures with non-empty encapsulated content
    (typically adbe.pkcs7.sha1), we only compared hash values and
    never actually checked SignatureValue within SignerInfo.
    The bug introduced by c7c0207b1cfe49a4353d6cda93dbebef4508138f
    made trivial signature forgeries possible. Fix this by calling
    NSS_CMSSignerInfo_Verify() after the hash values compare equal.

 poppler/NSSCryptoSignBackend.cc | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

commit 6756ae00544e7370e2f5c4d153c28450d768fd41
Author: Albert Astals Cid <aacid@kde.org>
Date:   Mon Mar 31 20:22:35 2025 +0200

    Update (C)

 cpp/poppler-document.cpp | 1 +
 cpp/poppler-document.h   | 1 +
 poppler/Stream.cc        | 1 +
 3 files changed, 3 insertions(+)

commit 1f151565bbca5be7449ba8eea6833051cc1baa41
Author: Albert Astals Cid <aacid@kde.org>
Date:   Mon Mar 31 14:35:49 2025 +0200

    Move isOk check to inside JBIG2Bitmap::combine

 poppler/JBIG2Stream.cc | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

commit 4d5d87ba29fd68cf171b017e46f988dc9ed173a5
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sat Mar 29 17:58:53 2025 +0100

    Fix comment

 poppler/Outline.cc | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit cc45f023e87b71835d61014fd20f87089b409205
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Sat Mar 29 16:50:45 2025 +0000

    Allow empty outline titles

    All downstream users treats titleLen == 0 as this item
    (and children) doesn't exist but it is kind of valid
    to have a outline title to be empty string.
    In order to don't break downstreams use a zero
    width space.

 poppler/Outline.cc | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

commit 24f81b90c5cf92f0bd9893736f7048f06fb8aaef
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sat Mar 29 16:08:22 2025 +0100

    Add const to the span<> that are just for reading from them

 poppler/Stream.cc                            | 4 ++--
 poppler/Stream.h                             | 6 +++---
 poppler/UTF.cc                               | 6 +++---
 poppler/UTF.h                                | 6 +++---
 qt5/src/poppler-qiodeviceoutstream-private.h | 4 ++--
 qt5/src/poppler-qiodeviceoutstream.cc        | 4 ++--
 qt6/src/poppler-qiodeviceoutstream-private.h | 4 ++--
 qt6/src/poppler-qiodeviceoutstream.cc        | 4 ++--
 8 files changed, 19 insertions(+), 19 deletions(-)

commit 982d0f37213ac44d40483695ddf26a2d59f8fd7a
Author: Nathanael d. Noblet <nathanael@noblet.ca>
Date:   Mon Dec 16 15:52:16 2019 -0700

    Add additional info functions to poppler-document object in CPP

    Allow querying if the document has Javascript and which type of
    forms it contains

 cpp/poppler-document.cpp | 26 ++++++++++++++++++++++++++
 cpp/poppler-document.h   | 10 ++++++++++
 2 files changed, 36 insertions(+)

commit 86c146f15db3b4034a36eda6c08f2411a9fa3a93
Author: Martin Emrich <dev@martinemrich.me>
Date:   Fri Mar 28 00:06:24 2025 +0000

    Cap CachedFileStream to file length

 poppler/Stream.cc | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

commit 8534441c563677a2272c307af2cb70fc7c8f42bb
Author: Albert Astals Cid <aacid@kde.org>
Date:   Thu Mar 27 23:18:30 2025 +0100

    Update (C)

 fofi/FoFiIdentifier.cc           | 1 +
 fofi/FoFiIdentifier.h            | 1 +
 poppler/AnnotStampImageHelper.cc | 1 +
 poppler/ImageEmbeddingUtils.cc   | 2 +-
 poppler/XRef.h                   | 2 +-
 5 files changed, 5 insertions(+), 2 deletions(-)

commit 03014f667cf63fccee1318a0a333232c37222643
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Feb 20 12:51:09 2025 +0100

    AutoFreeMemStream: Store data in vector

    Let the data owning actually happen in AutoFreeMemStream and let
    everyone create in proper data structures and then just move
    everything
    in place.

 poppler/Annot.cc                 |  9 +++--
 poppler/AnnotStampImageHelper.cc |  5 +--
 poppler/Form.cc                  | 20 +++++-----
 poppler/ImageEmbeddingUtils.cc   | 81
 ++++++++++++++++++++++------------------
 poppler/SplashOutputDev.cc       |  7 ++--
 poppler/Stream.cc                |  5 +--
 poppler/Stream.h                 |  5 ++-
 poppler/XRef.cc                  | 11 ++----
 poppler/XRef.h                   |  3 +-
 9 files changed, 74 insertions(+), 72 deletions(-)

commit 2162be2a6e3c486cc8f685abab453ed08353cbeb
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Wed Mar 26 23:33:36 2025 +0000

    Memcleanup in fofi fontidentifier

 fofi/FoFiIdentifier.cc | 153
 ++++++++-----------------------------------------
 fofi/FoFiIdentifier.h  |   1 -
 2 files changed, 25 insertions(+), 129 deletions(-)

commit ee57c2a4ef950eed5eb841d7f89ee385ec818321
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Mar 26 18:42:29 2025 +0100

    pdfConformanceFromString: Fix typo pq -> pg

 poppler/PDFDoc.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit c992ce618a95cba59076cf7a4a8711a854bf99c8
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Wed Mar 26 16:55:16 2025 +0000

    Dont leak gpgme headers into frontends

    In a future gpgme release, one can do weird stuff during
    installations.
    In order to avoid the side effects of that, don't include gpgme
    headers
    in the headers that the frontends might need

 poppler/GPGMECryptoSignBackend.cc             | 10 ++++++----
 poppler/GPGMECryptoSignBackend.h              | 15 +++------------
 poppler/GPGMECryptoSignBackendConfiguration.h | 25
 +++++++++++++++++++++++++
 qt5/src/poppler-form.cc                       |  2 +-
 qt6/src/poppler-form.cc                       |  2 +-
 qt6/tests/check_signature_basics.cpp          |  4 +++-
 6 files changed, 39 insertions(+), 19 deletions(-)

commit f54b815672117c250420787c8c006de98e8c7408
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Mar 26 11:26:32 2025 +0100

    Make sure regex doesn't stack overflow by limiting it

    Happens with very long pdfsubver strings when compiled with
    -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -flto=auto

 poppler/PDFDoc.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 1f44ba147b7283047f67cfa5f23cb2aedc3ae917
Author: Albert Astals Cid <aacid@kde.org>
Date:   Tue Mar 25 23:28:52 2025 +0100

    Update (C)

 poppler/DistinguishedNameParser.h             | 2 +-
 poppler/GlobalParams.cc                       | 1 +
 qt5/tests/check_distinguished_name_parser.cpp | 2 +-
 qt6/tests/check_distinguished_name_parser.cpp | 2 +-
 utils/HtmlFonts.cc                            | 2 +-
 utils/HtmlFonts.h                             | 2 +-
 utils/HtmlLinks.cc                            | 1 +
 utils/HtmlOutputDev.h                         | 2 +-
 utils/pdftohtml.cc                            | 2 +-
 9 files changed, 9 insertions(+), 7 deletions(-)

commit 31479a61efdfaa900e3f4b435108184a2b8cedb1
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Mon Mar 10 16:30:22 2025 +0100

    htmlout: Clean up GooString ownership

    Document ownership with unique_ptr's, especially for GooStrings, but
    also for a few other bits

 utils/HtmlFonts.cc     |  62 +++++++++++--------------
 utils/HtmlFonts.h      |  12 ++---
 utils/HtmlLinks.cc     |  18 ++++----
 utils/HtmlOutputDev.cc | 120
 +++++++++++++++++--------------------------------
 utils/HtmlOutputDev.h  |  22 ++++-----
 utils/pdftohtml.cc     |   5 +--
 6 files changed, 94 insertions(+), 145 deletions(-)

commit eea6845f2232c16751568963319258b58da59b1f
Author: Volker Krause <vkrause@kde.org>
Date:   Mon Mar 24 17:41:32 2025 +0100

    Fix build with Android API < 29

 poppler/GlobalParams.cc | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 574db8871c85620348df4e58a549003fdf41b8f8
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Mon Mar 24 13:40:05 2025 +0100

    Fix typo in DN-parser

    Also update test suite

 poppler/DistinguishedNameParser.h             | 2 +-
 qt5/tests/check_distinguished_name_parser.cpp | 2 ++
 qt6/tests/check_distinguished_name_parser.cpp | 2 ++
 3 files changed, 5 insertions(+), 1 deletion(-)

commit d87bc726c7cc98f8c26b60ece5f20236e9de1bc3
Author: Albert Astals Cid <aacid@kde.org>
Date:   Mon Mar 24 00:44:54 2025 +0100

    PSStack::roll: Protect against doing int = -INT_MIN

 poppler/Function.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 54dd103599923abcec983c782450ec6a1b1aa7d4
Author: Albert Astals Cid <aacid@kde.org>
Date:   Mon Mar 24 00:31:55 2025 +0100

    Update (C)

 poppler/TextOutputDev.cc | 2 +-
 poppler/TextOutputDev.h  | 2 +-
 utils/pdftocairo.cc      | 1 +
 3 files changed, 3 insertions(+), 2 deletions(-)

commit 803dfed395f267dcddfedba2d34613629f0204a4
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Tue Mar 11 15:00:04 2025 +0100

    pdftocairo: cleanup a bit in goostring ownership

    Also be a bit more explicit in copying

 utils/pdftocairo.cc | 35 +++++++++++++++--------------------
 1 file changed, 15 insertions(+), 20 deletions(-)

commit 7bbdb8b42d6c0c653d147ee07701b862735e50f3
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Tue Mar 11 14:48:23 2025 +0100

    Use GooString::copy to copy a GooString

 cpp/poppler-document.cpp | 2 +-
 poppler/Annot.cc         | 8 ++++----
 poppler/PSOutputDev.cc   | 3 +--
 poppler/TextOutputDev.cc | 7 ++-----
 poppler/TextOutputDev.h  | 2 +-
 5 files changed, 9 insertions(+), 13 deletions(-)

commit 9c4d80f2379ca2fac6da1db050b647d503fe6a1d
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Wed Mar 12 13:43:20 2025 +0100

    Improve errors on signing failure

 poppler/Form.cc                   | 14 +++++++-------
 poppler/GPGMECryptoSignBackend.cc | 11 +++++++++++
 2 files changed, 18 insertions(+), 7 deletions(-)

commit 1a4be9bf43e154d3d71ffcb062e99838fee2c5a0
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Tue Mar 11 14:58:55 2025 +0100

    pdfinfo: avoid a string copy

 utils/pdfinfo.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 0c20b0f84b40a4c388e9091f3220f359464229ba
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Mon Mar 10 16:21:44 2025 +0100

    GooString: Remove unused concatenate constructor

 goo/GooString.h | 8 --------
 1 file changed, 8 deletions(-)

commit d82eb45e8b9d26d214708236c735b5ce25b7a859
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sun Mar 9 23:45:21 2025 +0100

    Update (C)

 goo/GooString.h     | 1 +
 utils/pdftocairo.cc | 1 +
 2 files changed, 2 insertions(+)

commit 6d975d2f45471124dcba155c8242154d6100ade9
Author: Masamichi Hosoda <trueroad@trueroad.jp>
Date:   Thu Mar 6 23:41:37 2025 +0900

    Fix pdfcairo's document unit for SVG output

    Using cairo 1.17.6 and later,
    pdftocairo outputted SVGs with the wrong width and height.

    Starting with cairo 1.17.6,
    the default SVG units have been changed from pt to user units.
    https://gitlab.freedesktop.org/cairo/cairo/-/issues/545

    pdftocairo did not set the SVG unit,
    and the change in cairo's default
    caused pdfcairo's SVG output to be incorrect.

    This commit makes pdftocairo set the SVG unit to pt.
    So, pdftocairo outputs SVGs that have the correct width and height.

 utils/pdftocairo.cc | 1 +
 1 file changed, 1 insertion(+)

commit 8b1b53cfe3f23e6880143ee2cae8477e6ab0c103
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sun Mar 9 00:58:21 2025 +0100

    Use Python3 instead of PythonInterp since we already require newer
    cmake

    Thanks Funda Wang for the suggestion

 CMakeLists.txt | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

commit d37f721b82306280403b1b75b9c2d337cb1e8a1b
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Mar 6 15:18:41 2025 +0100

    Forbid GooString from explicit nullptr creation

    c++23 will do that for us for std::string, so just ensure nothing like
    that sneaks into the codebase.

 goo/GooString.h | 6 ++++++
 1 file changed, 6 insertions(+)

commit 1cc81b7bb2b1ac05c7eebcfd6e489533345de0e8
Author: Albert Astals Cid <aacid@kde.org>
Date:   Tue Mar 4 00:04:59 2025 +0100

    Increase version so people that track master can add ifdefs on version

 CMakeLists.txt   | 2 +-
 cpp/Doxyfile     | 2 +-
 qt5/src/Doxyfile | 2 +-
 qt6/src/Doxyfile | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

commit 7b620e866b6729ceffb5ecb0298e9acc968e1c1f
Author: Albert Astals Cid <aacid@kde.org>
Date:   Mon Mar 3 23:03:20 2025 +0100

    poppler 25.03.0

 CMakeLists.txt         |  6 +++---
 NEWS                   | 13 +++++++++++++
 cpp/Doxyfile           |  2 +-
 qt5/src/CMakeLists.txt |  2 +-
 qt5/src/Doxyfile       |  2 +-
 qt6/src/CMakeLists.txt |  2 +-
 qt6/src/Doxyfile       |  2 +-
 7 files changed, 21 insertions(+), 8 deletions(-)

commit 828d139b4830eaa97447fefb40a943f0b761c045
Author: Albert Astals Cid <aacid@kde.org>
Date:   Mon Mar 3 00:26:26 2025 +0100

    Update (C)

 poppler/Page.cc         | 2 +-
 utils/ImageOutputDev.cc | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit b91ce32ba7d3afbfc1ead01baabb21260829c358
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sun Mar 2 11:58:59 2025 +0100

    Set aOidData.oid.type

    Otherwise later
    aAttribute.type = aOidData.oid;
    ends up being a copy of unused memory

    siBuffer is what the old code removed in
    84f5268256b40d40f12fa2290845b607d7895529 used

    Also remove an
       aOidData.oid.data = nullptr;
    that does nothing since it gets overwritten 2 lines later

 poppler/NSSCryptoSignBackend.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit e78f4c937e1e94912b8b175a8e8e8ff2ef52ace3
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sun Mar 2 11:41:27 2025 +0100

    Fix memory leaks introduced in the str->reset commit

 poppler/PSOutputDev.cc  |  9 ++++-----
 poppler/Page.cc         |  4 ++--
 utils/ImageOutputDev.cc | 16 ++++++++--------
 3 files changed, 14 insertions(+), 15 deletions(-)

commit 70b80793218e0ce0c029ea245832f1843accb7a6
Author: Albert Astals Cid <aacid@kde.org>
Date:   Thu Feb 27 19:32:40 2025 +0100

    Update (C)

 qt6/tests/check_signature_basics.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit a45449bedbc74e4f0f0998fd23e636ce331f858c
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Feb 27 14:21:04 2025 +0100

    fix pgp test with no signature backends

 qt6/tests/check_signature_basics.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

commit bb58c2ee2bc560d7e5bf65a2d840192278cb354f
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Feb 27 12:36:58 2025 +0100

    Fix windows; include array

 poppler/GPGMECryptoSignBackend.cc | 1 +
 1 file changed, 1 insertion(+)

commit d3b96a62acd388ffe45dff65e517cd5726c147ba
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Feb 13 20:06:27 2025 +0100

    Add unit test

 qt6/tests/CMakeLists.txt             |   3 +
 qt6/tests/check_signature_basics.cpp | 144
 +++++++++++++++++++++++++++++++++++
 2 files changed, 147 insertions(+)

commit f0316ba62df9ce6d8e17a9349934b4a06df87e69
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Mon Dec 2 16:36:20 2024 +0100

    Put a pgp signature in a pdf file

    Allow putting a pgp signature in a pdf file.
    This is not fully documented inside the specification, but basically
    it
    is replacing the CMS bundle as described with a pgp bundle.

    These signatures are tagged in the g10c namespace
    (https://github.com/adobe/pdf-names-list/issues/45) and is only
    implemented in the GPGME backend as a 'whatever gpg understands'.

    A special difference is that the signature is not padded with zeroes,
    but with a gpg comment packet with the exact size to fill the void.

 CMakeLists.txt                    |   2 +
 config.h.cmake                    |   3 +
 poppler/CertificateInfo.cc        |  10 +++
 poppler/CertificateInfo.h         |  11 ++-
 poppler/CryptoSignBackend.cc      |   4 +
 poppler/CryptoSignBackend.h       |   1 +
 poppler/Form.cc                   | 106 ++++++++++++++-----------
 poppler/GPGMECryptoSignBackend.cc | 159
 +++++++++++++++++++++++++++++---------
 poppler/GPGMECryptoSignBackend.h  |  17 +++-
 poppler/NSSCryptoSignBackend.cc   |   1 +
 qt5/src/poppler-form.cc           |  43 +++++++++++
 qt5/src/poppler-form.h            |  38 ++++++++-
 qt6/src/poppler-form.cc           |  44 +++++++++++
 qt6/src/poppler-form.h            |  38 ++++++++-
 utils/pdfsig.cc                   |   3 +
 15 files changed, 391 insertions(+), 89 deletions(-)

commit 287cd3aa9423ba2a038462f309d10093a8fbccbd
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Feb 27 11:21:29 2025 +0100

    Fix windows run

 poppler/PDFDoc.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 9ce35a2cd89489d91c2d754c2c67d837f44875c7
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Feb 26 22:07:39 2025 +0100

    Update (C)

 glib/poppler-annot.cc             | 1 +
 glib/poppler-annot.h              | 1 +
 glib/poppler-structure-element.cc | 1 +
 poppler/CharCodeToUnicode.cc      | 2 +-
 poppler/CryptoSignBackend.h       | 2 +-
 poppler/DCTStream.h               | 2 +-
 poppler/GPGMECryptoSignBackend.cc | 2 +-
 poppler/JPEG2000Stream.cc         | 1 +
 poppler/JSInfo.cc                 | 2 +-
 poppler/JSInfo.h                  | 1 +
 poppler/MarkedContentOutputDev.cc | 1 +
 poppler/MarkedContentOutputDev.h  | 1 +
 poppler/PDFDoc.cc                 | 2 +-
 poppler/StructElement.cc          | 1 +
 poppler/StructElement.h           | 1 +
 qt6/src/poppler-annotation.h      | 2 +-
 qt6/src/poppler-form.h            | 2 +-
 17 files changed, 17 insertions(+), 8 deletions(-)

commit 84f5268256b40d40f12fa2290845b607d7895529
Author: Juraj Šarinay <juraj@sarinay.com>
Date:   Tue Jan 21 08:58:22 2025 +0100

    Remove my_SEC_StringToOID(), replace the string by an OID.

    The function was only ever called on string representation
    of id-aa-signingCertificateV2. Simplify the code by using
    the corresponding OID directly and remove the function.

 poppler/NSSCryptoSignBackend.cc | 131
 +++++++++-------------------------------
 1 file changed, 28 insertions(+), 103 deletions(-)

commit 08c2f603c2f5758a929862b7da8a1105ee5d591b
Author: Markus Göllnitz <camelcasenick@bewares.it>
Date:   Mon Feb 24 06:24:30 2025 +0100

    glib: check file attachment annotation for this class before casting

    The check was correct, but not sufficient and could lead
    to segmentation violations.

    Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>

 glib/poppler-annot.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit dac9e5254fbc24cdaefcaca734ef07bd2eaf8e62
Author: Markus Göllnitz <camelcasenick@bewares.it>
Date:   Mon Feb 24 06:21:51 2025 +0100

    glib: subclass stamp as markup

    AnnotStamp already sublasses AnnotMarkup in
    poppler/Annot.cc, but this was never exposed to GLib.

    Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>

 glib/poppler-annot.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit cc2897f016e269956ba0b7e2f50971d5cdefdd03
Author: Juraj Šarinay <juraj@sarinay.com>
Date:   Mon Feb 17 00:05:44 2025 +0100

    Do not embed unnecessary fonts if signature appearance string
    is empty.

 poppler/Form.cc   | 45 ++++++++++++++++++++++++---------------------
 poppler/PDFDoc.cc | 25 ++++++++++++++-----------
 2 files changed, 38 insertions(+), 32 deletions(-)

commit ccef623296cf491dea5effc8242053846d5acbcc
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Thu Feb 20 11:01:58 2025 +0100

    Less goostring pointers

    Stream formats can be std::string, and a few other pointers aren't
    needed

 poppler/Annot.cc          | 21 +++++---------
 poppler/Annot.h           |  2 +-
 poppler/CairoOutputDev.cc | 13 ++++-----
 poppler/DCTStream.cc      | 10 +++----
 poppler/DCTStream.h       |  2 +-
 poppler/FlateEncoder.h    |  2 +-
 poppler/Form.cc           | 10 ++-----
 poppler/Form.h            |  2 +-
 poppler/JBIG2Stream.cc    |  4 +--
 poppler/JBIG2Stream.h     |  2 +-
 poppler/JPEG2000Stream.cc |  4 +--
 poppler/JPEG2000Stream.h  |  2 +-
 poppler/JPXStream.cc      |  4 +--
 poppler/JPXStream.h       |  2 +-
 poppler/Object.h          |  5 ++--
 poppler/PDFDoc.cc         | 23 +++++----------
 poppler/PDFDoc.h          |  4 +--
 poppler/PSOutputDev.cc    | 25 +++++++---------
 poppler/Stream.cc         | 74
 +++++++++++++++++++++++------------------------
 poppler/Stream.h          | 37 ++++++++++++------------
 poppler/StructElement.cc  | 15 ++++------
 poppler/StructElement.h   |  5 ++--
 utils/pdfinfo.cc          |  4 +--
 23 files changed, 119 insertions(+), 153 deletions(-)

commit feedc7bb40905b0e4aced1b9fea984e126db370e
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Tue Feb 11 10:52:17 2025 +0100

    Signature-GPGME: more correct validation handling

    Previously the code used the slightly higher-level api that tried to
    combine signature and certificate validation into one.

    Given poppler have the certificate validation as a different step, use
    just the signature valditaion api for signature validation api.

 poppler/GPGMECryptoSignBackend.cc | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

commit 0f8a128fd3f3ae5400e78cd714ced04ddb090637
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Wed Feb 19 14:58:38 2025 +0100

    Less manual new/delete of GooString

     * Replace a few with std::string
     * Microoptimization: fewer string compares
     * Replace manual refcount with shared_ptr
     * Do a couple of std::string_view

 glib/poppler-structure-element.cc |  2 +-
 poppler/Catalog.cc                | 15 +++++------
 poppler/Catalog.h                 |  2 +-
 poppler/CharCodeToUnicode.cc      |  8 +++---
 poppler/JSInfo.cc                 | 16 +++++-------
 poppler/JSInfo.h                  |  2 +-
 poppler/MarkedContentOutputDev.cc | 11 +++-----
 poppler/MarkedContentOutputDev.h  | 39 ++++++++--------------------
 poppler/PDFDoc.cc                 | 54
 ++++++++++++++++++++++++---------------
 poppler/UTF.cc                    |  9 +++----
 poppler/UTF.h                     |  8 +++---
 qt5/src/poppler-document.cc       |  5 ++--
 qt6/src/poppler-document.cc       |  5 ++--
 13 files changed, 80 insertions(+), 96 deletions(-)

commit 8f465fea3778e233eb11d1ac22e56cbe5ac722a1
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Wed Feb 12 14:46:48 2025 +0100

    Signing: Improve error handling on bad passphrase

 poppler/CryptoSignBackend.h       | 1 +
 poppler/GPGMECryptoSignBackend.cc | 6 ++++++
 qt6/src/poppler-annotation.cc     | 2 ++
 qt6/src/poppler-annotation.h      | 1 +
 qt6/src/poppler-form.cc           | 2 ++
 qt6/src/poppler-form.h            | 4 ++++
 6 files changed, 16 insertions(+)

commit 7d1b09326e4994d0382153d09c448a9df62e24ae
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Feb 19 22:52:10 2025 +0100

    Update (C)

 glib/poppler-form-field.cc | 1 +
 poppler/Catalog.cc         | 1 +
 2 files changed, 2 insertions(+)

commit 8ffae6f9720fe11ff646461677ce4b532dfd3b2a
Author: Aaron Nguyen <aaron.nguyen@veeva.com>
Date:   Wed Feb 19 20:59:22 2025 +0000

    Handle bad catalog dictionaries where Pages points to its child

    This should take care of edge cases like Issue #1559 where we get
    errors like `Syntax Error: Kids object (page 1) is wrong type (null)`
    in scenarios where there are incorrect Pages value in its catalog
    dictionary. In the case of `badcatalogpages.pdf` in Issue #1559, the
    Pages value `/Pages 14 0 R` actually points to its Kid, which is a
    Page value. Here is the PDF content stream for `badcatalogpages.pdf`:

    ```
    12 0 obj
    <</Lang(en)/MarkInfo<</Marked true>>/Metadata 9 0 R/Pages 14
    0 R/StructTreeRoot 3 0 R/Type/Catalog/ViewerPreferences 13 0
    R/OutputIntents[1 0 R]/Version/1.7>>
    endobj

    ...

    14 0 obj
    <</Contents 32 0 R/CropBox[0 0 612 792]/MediaBox[0 0 612
    792]/Parent 31 0 R/Resources<</ExtGState 28 0 R/Font 15 0
    R/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Rotate 0/StructParents
    0/Tabs/S/Type/Page/Annots[]>>
    endobj

    ...

    31 0 obj
    <</Count 1/Kids[14 0 R]/Type/Pages>>
    endobj
    ```

 poppler/Catalog.cc | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

commit 384e21b00feab92a176dc022d052f1609004ccc0
Author: Jan-Michael Brummer <jan-michael.brummer1@volkswagen.de>
Date:   Wed Feb 12 20:55:18 2025 +0100

    glib: Fix default signature colors

    The newly introduced color conversion function expects 16bit,
    not 8bit.
    Adjust default colors accordingly.

    Fixes: https://gitlab.freedesktop.org/poppler/poppler/-/issues/1564

 glib/poppler-form-field.cc | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

commit 5c50cbabe9c79f7958e1daf8a5e99989f751d7b0
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Feb 19 17:52:23 2025 +0100

    Update (C)

 poppler/Page.h | 1 +
 1 file changed, 1 insertion(+)

commit 01a1f7da81f0eb54a3266c5e69ad97e80fa13bbf
Author: Even Rouault <even.rouault@spatialys.com>
Date:   Thu Feb 6 15:03:27 2025 +0100

    Add Page::getPageObj() getter

    The GDAL PDF driver
    (https://github.com/OSGeo/gdal/tree/master/frmts/pdf) needs low level
    access to PDF objects. In particular it needs to access the Object
    Page::pageObj private member. To workaround that, GDAL uses nasty
    '#define private public' hacks, which beyond being ugly, occasionaly
    cause practical build issues such as
    https://github.com/OSGeo/gdal/issues/11477

    Having a clean getter makes things much easier.

    If this change is adopted, the following cleanup will be possible:
    https://github.com/rouault/gdal/commit/3594ee6e0ad6f4f806299e3b4c67cb7eb3a1853d

 poppler/Page.h | 3 +++
 1 file changed, 3 insertions(+)

commit 4d9e40e643622abc30e75a9efae9492a8727d5d5
Author: Albert Astals Cid <aacid@kde.org>
Date:   Wed Feb 5 15:26:52 2025 +0100

    Update (C)

 cpp/poppler-embedded-file.cpp     | 1 +
 cpp/poppler-font-private.h        | 2 +-
 glib/poppler-annot.cc             | 1 +
 glib/poppler-attachment.cc        | 1 +
 glib/poppler-media.cc             | 1 +
 glib/poppler-structure-element.cc | 2 +-
 poppler/CIDFontsWidthsBuilder.h   | 2 +-
 poppler/CMap.cc                   | 1 +
 poppler/CairoFontEngine.cc        | 2 +-
 poppler/CairoOutputDev.cc         | 1 +
 poppler/DCTStream.cc              | 1 +
 poppler/DCTStream.h               | 1 +
 poppler/Decrypt.cc                | 1 +
 poppler/Decrypt.h                 | 1 +
 poppler/FlateEncoder.cc           | 1 +
 poppler/FlateEncoder.h            | 1 +
 poppler/FlateStream.h             | 1 +
 poppler/FontInfo.cc               | 2 +-
 poppler/Function.cc               | 1 +
 poppler/Gfx.cc                    | 2 +-
 poppler/GfxState.cc               | 1 +
 poppler/Hints.cc                  | 1 +
 poppler/JBIG2Stream.cc            | 1 +
 poppler/JBIG2Stream.h             | 1 +
 poppler/JPEG2000Stream.h          | 1 +
 poppler/JPXStream.cc              | 2 +-
 poppler/JPXStream.h               | 1 +
 poppler/Lexer.cc                  | 2 +-
 poppler/Linearization.cc          | 1 +
 poppler/OutputDev.cc              | 1 +
 poppler/PreScanOutputDev.cc       | 1 +
 poppler/Rendition.cc              | 1 +
 poppler/Stream.cc                 | 2 +-
 poppler/Stream.h                  | 2 +-
 poppler/TextOutputDev.cc          | 4 ++--
 poppler/TextOutputDev.h           | 2 +-
 poppler/XRef.cc                   | 2 +-
 qt5/src/poppler-embeddedfile.cc   | 2 +-
 qt5/src/poppler-media.cc          | 1 +
 qt5/src/poppler-private.h         | 2 +-
 qt5/src/poppler-sound.cc          | 1 +
 qt6/src/poppler-embeddedfile.cc   | 2 +-
 qt6/src/poppler-media.cc          | 1 +
 qt6/src/poppler-private.h         | 2 +-
 qt6/src/poppler-sound.cc          | 1 +
 test/pdf-fullrewrite.cc           | 1 +
 utils/HtmlOutputDev.cc            | 2 +-
 utils/ImageOutputDev.cc           | 1 +
 utils/pdffonts.cc                 | 2 +-
 49 files changed, 50 insertions(+), 20 deletions(-)

commit 032d035220702523cf10d924fd436c9e6c83d24c
Author: Sune Vuorela <sune@vuorela.dk>
Date:   Wed Feb 5 08:01:50 2025 +0000

    Enforce error checking on stream::reset

 cpp/poppler-embedded-file.cpp   |   4 +-
 glib/poppler-attachment.cc      |   4 +-
 glib/poppler-media.cc           |   4 +-
 poppler/CMap.cc                 |   5 +-
 poppler/CairoOutputDev.cc       | 108 ++++++++++++++++-------------
 poppler/DCTStream.cc            |   4 +-
 poppler/DCTStream.h             |   2 +-
 poppler/Decrypt.cc              |   8 +--
 poppler/Decrypt.h               |   6 +-
 poppler/FileSpec.cc             |   4 +-
 poppler/FlateEncoder.cc         |   4 +-
 poppler/FlateEncoder.h          |   2 +-
 poppler/FlateStream.h           |   2 +-
 poppler/Function.cc             |  10 ++-
 poppler/Gfx.cc                  |   8 ++-
 poppler/GfxFont.cc              |   6 +-
 poppler/GfxState.cc             |   5 +-
 poppler/Hints.cc                |  31 ++++++---
 poppler/JBIG2Stream.cc          |   7 +-
 poppler/JBIG2Stream.h           |   2 +-
 poppler/JPEG2000Stream.h        |   2 +-
 poppler/JPXStream.cc            |   5 +-
 poppler/JPXStream.h             |   2 +-
 poppler/Lexer.cc                |   8 ++-
 poppler/Linearization.cc        |   2 +-
 poppler/Object.h                |   2 +-
 poppler/OutputDev.cc            |   8 ++-
 poppler/PDFDoc.cc               |  51 +++++++++-----
 poppler/PSOutputDev.cc          | 148
 +++++++++++++++++++++++-----------------
 poppler/Page.cc                 |  22 +++---
 poppler/Parser.cc               |   4 +-
 poppler/PreScanOutputDev.cc     |   8 ++-
 poppler/Rendition.cc            |   4 +-
 poppler/SplashOutputDev.cc      | 139
 +++++++++++++++++++------------------
 poppler/Stream.cc               | 111 ++++++++++++++----------------
 poppler/Stream.h                |  89 ++++++++++++------------
 poppler/XRef.cc                 |  13 +++-
 qt5/src/QPainterOutputDev.cc    |  18 +++--
 qt5/src/poppler-document.cc     |   3 +-
 qt5/src/poppler-embeddedfile.cc |   4 +-
 qt5/src/poppler-media.cc        |   5 +-
 qt5/src/poppler-sound.cc        |   4 +-
 qt6/src/QPainterOutputDev.cc    |  18 +++--
 qt6/src/poppler-document.cc     |   3 +-
 qt6/src/poppler-embeddedfile.cc |   4 +-
 qt6/src/poppler-media.cc        |   5 +-
 qt6/src/poppler-sound.cc        |   4 +-
 test/pdf-fullrewrite.cc         |   4 +-
 utils/HtmlOutputDev.cc          |  50 +++++++-------
 utils/ImageOutputDev.cc         |  43 ++++++++----
 50 files changed, 575 insertions(+), 434 deletions(-)

commit 876db3bde971d556ba38ba30dc362b674010cd61
Author: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Date:   Sat Dec 14 18:17:48 2024 +0100

    [TextOutputDev] Replace some gmallocn with vector

    Instead of manually tracking the size of the temporary array just use
    a std::vector and push_back.

    Move the various iteration counters and variables from function scope
    to the appropriate loop scope.

 poppler/TextOutputDev.cc | 173
 +++++++++++++++++++----------------------------
 1 file changed, 69 insertions(+), 104 deletions(-)

commit 7ff20227548af4e3d443b9b33f4c80558adea371
Author: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Date:   Fri Dec 13 14:24:48 2024 +0100

    [TextOutputDev] Use std::sort instead of qsort, minor cleanup/fixes

    Replacing qsort with std::sort is fairly trivial, but gives some extra
    type safety and possibly some speedup due to inlining.

    The stricter type checks require to change the argument types of e.g.
    TextLineFrag::cmp* methods, but also gets rid of the type cast
    (to non-const! TextLineFrag*), likewise for the other classes.

    The return type change may see deliberate, but is necessary as both
    +1 and -1 are evaluated as true, and std::sort requires a compare
    function which returns bool. Note, the order is indeterminate in case
    both elements are compared as same, but this happens with both
    std::sort and qsort (man qsort: "If two members compare as equal,
    their order in the sorted array is undefined.").

    There are some included changes which are less obvious:

    - std::sort(nullptr, nullptr + 0, ...) is safe (no dereference),
    remove
      the extra nullptr check (`if (blocks)`).
    - No need for the immediate `wordArray` in TextWordList, just sort the
      std::vector<TextWord *> words.
    - TextBlock::cmpYXPrimaryRot is unused, remove it.

 poppler/TextOutputDev.cc | 223
 ++++++++++++++++++-----------------------------
 poppler/TextOutputDev.h  |   8 +-
 2 files changed, 87 insertions(+), 144 deletions(-)

commit b9b186de76598da68d40ad2c8806e8ae08db29ae
Author: Stefan Brüns <stefan.bruens@rwth-aachen.de>
Date:   Fri Mar 29 20:18:45 2024 +0100

    Simplify last line handling for TextPage::dump

    `!(i < nFrags - 1)` is the same as `i == nFrags -1` (as `i <
    nFrags` is
    a precondition), i.e. the second check is repetitive - just output
    the EOL once for the last line.

 poppler/TextOutputDev.cc | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

commit 81448f1c7b3d9dccac5305e18d61b5102657f049
Author: Albert Astals Cid <aacid@kde.org>
Date:   Sat Dec 7 12:51:34 2024 +0100

    CI: Enable bugprone-unchecked-optional-access

 .clang-tidy                       |  2 +-
 cpp/poppler-font-private.h        | 10 ++++++----
 glib/poppler-annot.cc             |  7 +++++--
 glib/poppler-structure-element.cc | 11 +++++++----
 poppler/CIDFontsWidthsBuilder.h   |  4 ++++
 poppler/CairoFontEngine.cc        |  3 ++-
 poppler/FontInfo.cc               |  2 +-
 poppler/Gfx.cc                    |  3 ++-
 poppler/PSOutputDev.cc            | 20 ++++++++++++--------
 poppler/TextOutputDev.cc          | 11 ++++++++++-
 qt5/src/poppler-private.h         | 15 +++++++++------
