File gdal-pr13664-poppler26.patch of Package gdal
From 979604d97720287416742ef264977f0e53a84aa8 Mon Sep 17 00:00:00 2001
From: Daeho Ro <40587651+daeho-ro@users.noreply.github.com>
Date: Fri, 9 Jan 2026 04:34:51 +0900
Subject: [PATCH] PDF: add compatibility with Poppler 26.01.0 (#13664)
---
frmts/pdf/pdfio.cpp | 13 +++++++++----
frmts/pdf/pdfio.h | 15 +++++++++------
frmts/pdf/pdfobject.cpp | 12 ++++++++----
3 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/frmts/pdf/pdfio.cpp b/frmts/pdf/pdfio.cpp
index 39cb1285ef40..32c3263e9219 100644
--- a/frmts/pdf/pdfio.cpp
+++ b/frmts/pdf/pdfio.cpp
@@ -250,8 +250,9 @@ int VSIPDFFileStream::lookChar()
/* reset() */
/************************************************************************/
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2)
+#if POPPLER_MAJOR_VERSION > 25
+bool VSIPDFFileStream::rewind()
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2
bool VSIPDFFileStream::reset()
#else
void VSIPDFFileStream::reset()
@@ -272,8 +273,12 @@ void VSIPDFFileStream::reset()
/* unfilteredReset() */
/************************************************************************/
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 3)
+#if POPPLER_MAJOR_VERSION > 25
+bool VSIPDFFileStream::unfilteredRewind()
+{
+ return rewind();
+}
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 3
bool VSIPDFFileStream::unfilteredReset()
{
return reset();
diff --git a/frmts/pdf/pdfio.h b/frmts/pdf/pdfio.h
index 5fbe3a9dc2ae..1fe289211769 100644
--- a/frmts/pdf/pdfio.h
+++ b/frmts/pdf/pdfio.h
@@ -55,8 +55,9 @@ class VSIPDFFileStream final : public BaseStream
int getUnfilteredChar() override;
int lookChar() override;
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2)
+#if POPPLER_MAJOR_VERSION > 25
+ bool rewind() override;
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2
bool reset() override;
#else
void reset() override;
@@ -64,16 +65,18 @@ class VSIPDFFileStream final : public BaseStream
static void resetNoCheckReturnValue(Stream *str)
{
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2)
+#if POPPLER_MAJOR_VERSION > 25
+ CPL_IGNORE_RET_VAL(str->rewind());
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2
CPL_IGNORE_RET_VAL(str->reset());
#else
str->reset();
#endif
}
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 3)
+#if POPPLER_MAJOR_VERSION > 25
+ bool unfilteredRewind() override;
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2
bool unfilteredReset() override;
#else
void unfilteredReset() override;
diff --git a/frmts/pdf/pdfobject.cpp b/frmts/pdf/pdfobject.cpp
index bcd48c016cd8..3fa9f8ca232e 100644
--- a/frmts/pdf/pdfobject.cpp
+++ b/frmts/pdf/pdfobject.cpp
@@ -1409,8 +1409,10 @@ int64_t GDALPDFStreamPoppler::GetLength(int64_t nMaxSize)
if (m_nLength >= 0)
return m_nLength;
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2)
+#if POPPLER_MAJOR_VERSION > 25
+ if (!m_poStream->rewind())
+ return 0;
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2
if (!m_poStream->reset())
return 0;
#else
@@ -1488,8 +1490,10 @@ int64_t GDALPDFStreamPoppler::GetRawLength()
return m_nRawLength;
auto undecodeStream = m_poStream->getUndecodedStream();
-#if POPPLER_MAJOR_VERSION > 25 || \
- (POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2)
+#if POPPLER_MAJOR_VERSION > 25
+ if (!undecodeStream->rewind())
+ return 0;
+#elif POPPLER_MAJOR_VERSION == 25 && POPPLER_MINOR_VERSION >= 2
if (!undecodeStream->reset())
return 0;
#else