From e170ad557d5f13daeeac047dfaa79347bbe5062f Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Wed, 16 Feb 2022 09:08:11 +0000 Subject: [PATCH] pdf-backend: fix compat with Poppler > 22.02. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: pdf-backend.cc: In constructor ‘pdf::Document::Document(const string&)’: pdf-backend.cc:133:64: error: no matching function for call to ‘PDFDoc::PDFDoc(pdf::String*, std::nullptr_t, std::nullptr_t)’ https://cgit.freedesktop.org/poppler/poppler/commit/?id=07889cdfd8a261dc --- pdf-backend.cc | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pdf-backend.cc b/pdf-backend.cc index 3c871b1..c74053d 100644 --- a/pdf-backend.cc +++ b/pdf-backend.cc @@ -129,8 +129,27 @@ void pdf::Environment::set_antialias(bool value) * =================== */ +template +class unique_ptr_adapter +{ +protected: + std::unique_ptr uptr; +public: + unique_ptr_adapter(T *ptr) + : uptr(ptr) + { } + operator std::unique_ptr () + { + return std::move(this->uptr); + } + operator T* () + { + return this->uptr.release(); + } +}; + pdf::Document::Document(const std::string &file_name) -: ::PDFDoc(new pdf::String(file_name.c_str()), nullptr, nullptr) +: ::PDFDoc(unique_ptr_adapter(new pdf::String(file_name.c_str())), nullptr, nullptr) { if (!this->isOk()) throw LoadError(); From 81b635e014ebd0240a8719cc39b6a1b759cc6a98 Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Wed, 16 Feb 2022 09:10:28 +0000 Subject: [PATCH] main: use pdf::link::Destination copy constructor. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: main.cc: In function ‘int get_page_for_goto_link(pdf::link::GoTo*, pdf::Catalog*)’: main.cc:92:27: error: ‘const Destination’ {aka ‘const class LinkDest’} has no member named ‘copy’ https://cgit.freedesktop.org/poppler/poppler/commit/?id=7a429c3cf9fba67e --- main.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.cc b/main.cc index 2b42d16..bb5fd57 100644 --- a/pdf2djvu.cc +++ b/pdf2djvu.cc @@ -89,7 +89,7 @@ static int get_page_for_goto_link(pdf::link::GoTo *goto_link, pdf::Catalog *cata #endif } else - dest.reset(orig_dest->copy()); + dest.reset(new pdf::link::Destination(*orig_dest)); if (dest.get() != nullptr) { int page; From 956fedc7e0831126b9006efedad5519c14201c52 Mon Sep 17 00:00:00 2001 From: Jakub Wilk Date: Thu, 17 Feb 2022 00:26:41 +0100 Subject: [PATCH] pdf-backend: fix compat with Poppler > 22.02. Fixes: pdf-backend.cc:152:3: error: no matching constructor for initialization of '::PDFDoc' /usr/include/poppler/PDFDoc.h:132:14: note: candidate constructor not viable: no known conversion from 'nullptr_t' to 'const std::optional' for 2nd argument https://cgit.freedesktop.org/poppler/poppler/commit/?id=4f2abd3efa1ee013 --- pdf-backend.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdf-backend.cc b/pdf-backend.cc index c74053d..ba85da2 100644 --- a/pdf-backend.cc +++ b/pdf-backend.cc @@ -149,7 +149,7 @@ class unique_ptr_adapter }; pdf::Document::Document(const std::string &file_name) -: ::PDFDoc(unique_ptr_adapter(new pdf::String(file_name.c_str())), nullptr, nullptr) +: ::PDFDoc(unique_ptr_adapter(new pdf::String(file_name.c_str()))) { if (!this->isOk()) throw LoadError();