summaryrefslogtreecommitdiff
path: root/sci-libs/gdal/files/gdal-3.4.1-poppler-22.03.0.patch
blob: 94640e046a1bec5959c849c48c2081c9e60c86ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
From 17e98757e78969a199d1d6318f53d088da192191 Mon Sep 17 00:00:00 2001
From: Even Rouault <even.rouault@spatialys.com>
Date: Fri, 18 Feb 2022 22:47:01 +0100
Subject: [PATCH] PDF: fix build against Poppler > 22.2

---
 frmts/pdf/pdfdataset.cpp | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/frmts/pdf/pdfdataset.cpp b/frmts/pdf/pdfdataset.cpp
index 22238bd74822..08f8e31c86a7 100644
--- a/frmts/pdf/pdfdataset.cpp
+++ b/frmts/pdf/pdfdataset.cpp
@@ -4241,8 +4241,6 @@ PDFDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo )
 #ifdef HAVE_POPPLER
   if(bUseLib.test(PDFLIB_POPPLER))
   {
-    GooString* poUserPwd = nullptr;
-
     static bool globalParamsCreatedByGDAL = false;
     {
         CPLMutexHolderD(&hGlobalParamsMutex);
@@ -4310,9 +4308,6 @@ PDFDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo )
     while( true )
     {
         VSIFSeekL(fp, 0, SEEK_SET);
-        if (pszUserPwd)
-            poUserPwd = new GooString(pszUserPwd);
-
         g_nPopplerErrors = 0;
         if( globalParamsCreatedByGDAL )
             registerErrorCallback();
@@ -4322,10 +4317,20 @@ PDFDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo )
         oObj.getObj()->initNull();
         auto poStream = new VSIPDFFileStream(fp, pszFilename, oObj.getObj());
 #endif
+#if POPPLER_MAJOR_VERSION > 22 || (POPPLER_MAJOR_VERSION == 22 && POPPLER_MINOR_VERSION > 2)
+        std::optional<GooString> osUserPwd;
+        if (pszUserPwd)
+            osUserPwd = std::optional<GooString>(pszUserPwd);
+        poDocPoppler = new PDFDoc(poStream, std::optional<GooString>(), osUserPwd);
+#else
+        GooString* poUserPwd = nullptr;
+        if (pszUserPwd)
+            poUserPwd = new GooString(pszUserPwd);
         poDocPoppler = new PDFDoc(poStream, nullptr, poUserPwd);
+        delete poUserPwd;
+#endif
         if( globalParamsCreatedByGDAL )
             registerErrorCallback();
-        delete poUserPwd;
         if( g_nPopplerErrors >= MAX_POPPLER_ERRORS )
         {
             PDFFreeDoc(poDocPoppler);