CMakeLists.txt | 1 + cmake/modules/PopplerMacros.cmake | 1 + glib/poppler-document.cc | 4 ++++ poppler/Annot.cc | 4 ++++ poppler/Annot.h | 3 ++- poppler/CachedFile.cc | 4 +++- poppler/CachedFile.h | 4 ++-- poppler/CairoOutputDev.cc | 5 ++++- poppler/JBIG2Stream.cc | 6 ++++-- poppler/Link.cc | 2 ++ poppler/Link.h | 1 + poppler/PDFDocBuilder.cc | 13 +++++++++++++ poppler/PDFDocBuilder.h | 4 ++-- poppler/SplashOutputDev.cc | 4 +++- poppler/Stream.cc | 10 ++++++++++ poppler/Stream.h | 4 ++-- poppler/TextOutputDev.cc | 4 +++- poppler/XRef.cc | 2 ++ poppler/XRef.h | 2 +- qt5/src/poppler-annotation.cc | 14 ++++++++------ qt5/src/poppler-link-private.h | 6 ++++-- qt5/src/poppler-link.cc | 24 +++++++++++++++++++++++- qt5/src/poppler-page.cc | 7 +++++++ qt5/src/poppler-pdf-converter.cc | 5 ++++- qt5/src/poppler-ps-converter.cc | 5 ++++- qt6/src/poppler-annotation.cc | 18 ++++++++++-------- qt6/src/poppler-link-private.h | 6 ++++-- qt6/src/poppler-link.cc | 29 ++++++++++++++++++++++++++++- qt6/src/poppler-page.cc | 7 +++++++ qt6/src/poppler-pdf-converter.cc | 5 ++++- qt6/src/poppler-ps-converter.cc | 5 ++++- qt6/tests/stress-threads-qt6.cpp | 7 +++---- splash/SplashPattern.cc | 7 +++++++ splash/SplashPattern.h | 2 ++ utils/pdftohtml.cc | 7 +++++-- 35 files changed, 188 insertions(+), 44 deletions(-)
New commits: commit 148e5424e6f0deb7680fdc9b25736888089b6b41 Author: Albert Astals Cid <[email protected]> Date: Thu Oct 29 13:47:13 2020 +0100 clang: Warn about weak-vtables diff --git a/CMakeLists.txt b/CMakeLists.txt index 7487875a..d0361f34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -405,6 +405,7 @@ set(poppler_SRCS poppler/PageTransition.cc poppler/Parser.cc poppler/PDFDoc.cc + poppler/PDFDocBuilder.cc poppler/PDFDocEncoding.cc poppler/PDFDocFactory.cc poppler/ProfileData.cc diff --git a/cmake/modules/PopplerMacros.cmake b/cmake/modules/PopplerMacros.cmake index a9d20948..6e5f0050 100644 --- a/cmake/modules/PopplerMacros.cmake +++ b/cmake/modules/PopplerMacros.cmake @@ -159,6 +159,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(_warn "${_warn} -Wundef") set(_warn "${_warn} -Wzero-as-null-pointer-constant") set(_warn "${_warn} -Wshadow") + set(_warn "${_warn} -Wweak-vtables") # set extra warnings set(_warnx "${_warnx} -Wconversion") diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc index e91fe342..d7e650be 100644 --- a/glib/poppler-document.cc +++ b/glib/poppler-document.cc @@ -5,6 +5,7 @@ * Copyright (C) 2018-2019 Marek Kasik <[email protected]> * Copyright (C) 2019 Masamichi Hosoda <[email protected]> * Copyright (C) 2019, Oliver Sander <[email protected]> + * Copyright (C) 2020 Albert Astals Cid <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -251,8 +252,11 @@ class BytesStream : public MemStream public: BytesStream(GBytes *bytes, Object &&dictA) : MemStream(static_cast<const char *>(g_bytes_get_data(bytes, nullptr)), 0, g_bytes_get_size(bytes), std::move(dictA)), m_bytes { g_bytes_ref(bytes), &g_bytes_unref } { } + ~BytesStream() override; }; +BytesStream::~BytesStream() = default; + /** * poppler_document_new_from_bytes: * @bytes: a #GBytes diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 11231d91..b6e4d32b 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -344,12 +344,16 @@ void AnnotPath::parsePathArray(Array *array) AnnotCalloutLine::AnnotCalloutLine(double x1, double y1, double x2, double y2) : coord1(x1, y1), coord2(x2, y2) { } +AnnotCalloutLine::~AnnotCalloutLine() = default; + //------------------------------------------------------------------------ // AnnotCalloutMultiLine //------------------------------------------------------------------------ AnnotCalloutMultiLine::AnnotCalloutMultiLine(double x1, double y1, double x2, double y2, double x3, double y3) : AnnotCalloutLine(x1, y1, x2, y2), coord3(x3, y3) { } +AnnotCalloutMultiLine::~AnnotCalloutMultiLine() = default; + //------------------------------------------------------------------------ // AnnotQuadrilateral //------------------------------------------------------------------------ diff --git a/poppler/Annot.h b/poppler/Annot.h index efa3a658..0d7bf174 100644 --- a/poppler/Annot.h +++ b/poppler/Annot.h @@ -140,7 +140,7 @@ class AnnotCalloutLine { public: AnnotCalloutLine(double x1, double y1, double x2, double y2); - virtual ~AnnotCalloutLine() { } + virtual ~AnnotCalloutLine(); AnnotCalloutLine(const AnnotCalloutLine &) = delete; AnnotCalloutLine &operator=(const AnnotCalloutLine &other) = delete; @@ -162,6 +162,7 @@ class AnnotCalloutMultiLine : public AnnotCalloutLine { public: AnnotCalloutMultiLine(double x1, double y1, double x2, double y2, double x3, double y3); + ~AnnotCalloutMultiLine() override; double getX3() const { return coord3.getX(); } double getY3() const { return coord3.getY(); } diff --git a/poppler/CachedFile.cc b/poppler/CachedFile.cc index 4207d9d2..f8c511a2 100644 --- a/poppler/CachedFile.cc +++ b/poppler/CachedFile.cc @@ -6,7 +6,7 @@ // // Copyright 2009 Stefan Thomas <[email protected]> // Copyright 2010, 2011 Hib Eris <[email protected]> -// Copyright 2010, 2018, 2019 Albert Astals Cid <[email protected]> +// Copyright 2010, 2018-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2013 Julien Nabet <[email protected]> // //======================================================================== @@ -260,4 +260,6 @@ size_t CachedFileWriter::write(const char *ptr, size_t size) return written; } +CachedFileLoader::~CachedFileLoader() = default; + //------------------------------------------------------------------------ diff --git a/poppler/CachedFile.h b/poppler/CachedFile.h index 57829bbe..bc73b59a 100644 --- a/poppler/CachedFile.h +++ b/poppler/CachedFile.h @@ -8,7 +8,7 @@ // // Copyright 2009 Stefan Thomas <[email protected]> // Copyright 2010 Hib Eris <[email protected]> -// Copyright 2010, 2018, 2019 Albert Astals Cid <[email protected]> +// Copyright 2010, 2018-2020 Albert Astals Cid <[email protected]> // //======================================================================== @@ -128,7 +128,7 @@ class CachedFileLoader public: CachedFileLoader() = default; - virtual ~CachedFileLoader() {}; + virtual ~CachedFileLoader(); CachedFileLoader(const CachedFileLoader &) = delete; CachedFileLoader &operator=(const CachedFileLoader &) = delete; diff --git a/poppler/CairoOutputDev.cc b/poppler/CairoOutputDev.cc index 996e2ae7..c3e29f38 100644 --- a/poppler/CairoOutputDev.cc +++ b/poppler/CairoOutputDev.cc @@ -16,7 +16,7 @@ // // Copyright (C) 2005-2008 Jeff Muizelaar <[email protected]> // Copyright (C) 2005, 2006 Kristian Høgsberg <[email protected]> -// Copyright (C) 2005, 2009, 2012, 2017-2019 Albert Astals Cid <[email protected]> +// Copyright (C) 2005, 2009, 2012, 2017-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2005 Nickolay V. Shmyrev <[email protected]> // Copyright (C) 2006-2011, 2013, 2014, 2017, 2018 Carlos Garcia Campos <[email protected]> // Copyright (C) 2008 Carl Worth <[email protected]> @@ -2993,6 +2993,7 @@ private: bool imageError; public: + ~RescaleDrawImage() override; cairo_surface_t *getSourceImage(Stream *str, int widthA, int height, int scaledWidth, int scaledHeight, bool printing, GfxImageColorMap *colorMapA, const int *maskColorsA) { cairo_surface_t *image = nullptr; @@ -3150,6 +3151,8 @@ public: } }; +RescaleDrawImage::~RescaleDrawImage() = default; + void CairoOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int widthA, int heightA, GfxImageColorMap *colorMap, bool interpolate, const int *maskColors, bool inlineImg) { cairo_surface_t *image; diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc index 67251739..60fbea49 100644 --- a/poppler/JBIG2Stream.cc +++ b/poppler/JBIG2Stream.cc @@ -15,7 +15,7 @@ // // Copyright (C) 2006 Raj Kumar <[email protected]> // Copyright (C) 2006 Paul Walmsley <[email protected]> -// Copyright (C) 2006-2010, 2012, 2014-2019 Albert Astals Cid <[email protected]> +// Copyright (C) 2006-2010, 2012, 2014-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2009 David Benjamin <[email protected]> // Copyright (C) 2011 Edward Jiang <[email protected]> // Copyright (C) 2012 William Bader <[email protected]> @@ -531,7 +531,7 @@ class JBIG2Segment { public: JBIG2Segment(unsigned int segNumA) { segNum = segNumA; } - virtual ~JBIG2Segment() { } + virtual ~JBIG2Segment(); JBIG2Segment(const JBIG2Segment &) = delete; JBIG2Segment &operator=(const JBIG2Segment &) = delete; void setSegNum(unsigned int segNumA) { segNum = segNumA; } @@ -542,6 +542,8 @@ private: unsigned int segNum; }; +JBIG2Segment::~JBIG2Segment() = default; + //------------------------------------------------------------------------ // JBIG2Bitmap //------------------------------------------------------------------------ diff --git a/poppler/Link.cc b/poppler/Link.cc index e5249345..a4f05f3d 100644 --- a/poppler/Link.cc +++ b/poppler/Link.cc @@ -526,6 +526,8 @@ LinkLaunch::LinkLaunch(const Object *actionObj) } } +LinkLaunch::~LinkLaunch() = default; + //------------------------------------------------------------------------ // LinkURI //------------------------------------------------------------------------ diff --git a/poppler/Link.h b/poppler/Link.h index dc2c5d9b..c8afbdc1 100644 --- a/poppler/Link.h +++ b/poppler/Link.h @@ -223,6 +223,7 @@ class LinkLaunch : public LinkAction public: // Build a LinkLaunch from an action dictionary. LinkLaunch(const Object *actionObj); + ~LinkLaunch() override; // Was the LinkLaunch created successfully? bool isOk() const override { return fileName != nullptr; } diff --git a/poppler/PDFDocBuilder.cc b/poppler/PDFDocBuilder.cc new file mode 100644 index 00000000..f6dac952 --- /dev/null +++ b/poppler/PDFDocBuilder.cc @@ -0,0 +1,13 @@ +//======================================================================== +// +// PDFDocBuilder.cc +// +// This file is licensed under the GPLv2 or later +// +// Copyright 2020 Albert Astals Cid <[email protected]> +// +//======================================================================== + +#include "PDFDocBuilder.h" + +PDFDocBuilder::~PDFDocBuilder() = default; diff --git a/poppler/PDFDocBuilder.h b/poppler/PDFDocBuilder.h index 2b66dc11..a0c19fc1 100644 --- a/poppler/PDFDocBuilder.h +++ b/poppler/PDFDocBuilder.h @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright 2010 Hib Eris <[email protected]> -// Copyright 2010, 2018 Albert Astals Cid <[email protected]> +// Copyright 2010, 2018, 2020 Albert Astals Cid <[email protected]> // //======================================================================== @@ -27,7 +27,7 @@ class PDFDocBuilder public: PDFDocBuilder() = default; - virtual ~PDFDocBuilder() = default; + virtual ~PDFDocBuilder(); PDFDocBuilder(const PDFDocBuilder &) = delete; PDFDocBuilder &operator=(const PDFDocBuilder &) = delete; diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc index 52e0b04b..b20d01ec 100644 --- a/poppler/SplashOutputDev.cc +++ b/poppler/SplashOutputDev.cc @@ -1070,7 +1070,7 @@ class SplashOutFontFileID : public SplashFontFileID public: SplashOutFontFileID(const Ref *rA) { r = *rA; } - ~SplashOutFontFileID() override { } + ~SplashOutFontFileID() override; bool matches(SplashFontFileID *id) override { return ((SplashOutFontFileID *)id)->r == r; } @@ -1078,6 +1078,8 @@ private: Ref r; }; +SplashOutFontFileID::~SplashOutFontFileID() = default; + //------------------------------------------------------------------------ // T3FontCache //------------------------------------------------------------------------ diff --git a/poppler/Stream.cc b/poppler/Stream.cc index c36ce113..4971e2ed 100644 --- a/poppler/Stream.cc +++ b/poppler/Stream.cc @@ -195,6 +195,7 @@ class BaseStreamStream : public Stream { public: BaseStreamStream(Stream *strA) : str(strA) { } + ~BaseStreamStream() override; StreamKind getKind() const override { return str->getBaseStream()->getKind(); } void reset() override { str->getBaseStream()->reset(); } @@ -214,6 +215,8 @@ private: std::unique_ptr<Stream> str; }; +BaseStreamStream::~BaseStreamStream() = default; + Stream *Stream::makeFilter(const char *name, Stream *str, Object *params, int recursion, Dict *dict) { int pred; // parameters @@ -1057,6 +1060,13 @@ void CachedFileStream::moveStart(Goffset delta) bufPos = start; } +MemStream::~MemStream() = default; + +AutoFreeMemStream::~AutoFreeMemStream() +{ + gfree(buf); +} + //------------------------------------------------------------------------ // EmbedStream //------------------------------------------------------------------------ diff --git a/poppler/Stream.h b/poppler/Stream.h index 7d51db60..c6b363f6 100644 --- a/poppler/Stream.h +++ b/poppler/Stream.h @@ -719,14 +719,14 @@ class MemStream : public BaseMemStream<const char> { public: MemStream(const char *bufA, Goffset startA, Goffset lengthA, Object &&dictA) : BaseMemStream(bufA, startA, lengthA, std::move(dictA)) { } + ~MemStream() override; }; class AutoFreeMemStream : public BaseMemStream<char> { public: AutoFreeMemStream(char *bufA, Goffset startA, Goffset lengthA, Object &&dictA) : BaseMemStream(bufA, startA, lengthA, std::move(dictA)) { } - - ~AutoFreeMemStream() override { gfree(buf); } + ~AutoFreeMemStream() override; }; //------------------------------------------------------------------------ diff --git a/poppler/TextOutputDev.cc b/poppler/TextOutputDev.cc index 45d4aaaf..eb37824e 100644 --- a/poppler/TextOutputDev.cc +++ b/poppler/TextOutputDev.cc @@ -4270,7 +4270,7 @@ class TextSelectionVisitor { public: TextSelectionVisitor(TextPage *page); - virtual ~TextSelectionVisitor() { } + virtual ~TextSelectionVisitor(); TextSelectionVisitor(const TextSelectionVisitor &) = delete; TextSelectionVisitor &operator=(const TextSelectionVisitor &) = delete; virtual void visitBlock(TextBlock *block, TextLine *begin, TextLine *end, const PDFRectangle *selection) = 0; @@ -4283,6 +4283,8 @@ protected: TextSelectionVisitor::TextSelectionVisitor(TextPage *p) : page(p) { } +TextSelectionVisitor::~TextSelectionVisitor() = default; + class TextSelectionDumper : public TextSelectionVisitor { public: diff --git a/poppler/XRef.cc b/poppler/XRef.cc index bc2b09b6..3747c6e7 100644 --- a/poppler/XRef.cc +++ b/poppler/XRef.cc @@ -1743,3 +1743,5 @@ void XRef::markUnencrypted() e->setFlag(XRefEntry::Unencrypted, true); } } + +XRef::XRefWriter::~XRefWriter() = default; diff --git a/poppler/XRef.h b/poppler/XRef.h index 665b208e..7418458b 100644 --- a/poppler/XRef.h +++ b/poppler/XRef.h @@ -260,7 +260,7 @@ private: XRefWriter() = default; virtual void startSection(int first, int count) = 0; virtual void writeEntry(Goffset offset, int gen, XRefEntryType type) = 0; - virtual ~XRefWriter() {}; + virtual ~XRefWriter(); XRefWriter(const XRefWriter &) = delete; XRefWriter &operator=(const XRefWriter &other) = delete; diff --git a/qt5/src/poppler-annotation.cc b/qt5/src/poppler-annotation.cc index afc6c879..f30e4d55 100644 --- a/qt5/src/poppler-annotation.cc +++ b/qt5/src/poppler-annotation.cc @@ -1,5 +1,5 @@ /* poppler-annotation.cc: qt interface to poppler - * Copyright (C) 2006, 2009, 2012-2015, 2018, 2019 Albert Astals Cid <[email protected]> + * Copyright (C) 2006, 2009, 2012-2015, 2018-2020 Albert Astals Cid <[email protected]> * Copyright (C) 2006, 2008, 2010 Pino Toscano <[email protected]> * Copyright (C) 2012, Guillermo A. Amaral B. <[email protected]> * Copyright (C) 2012-2014 Fabio D'Urso <[email protected]> @@ -4517,11 +4517,7 @@ class RichMediaAnnotationPrivate : public AnnotationPrivate public: RichMediaAnnotationPrivate() : settings(nullptr), content(nullptr) { } - ~RichMediaAnnotationPrivate() override - { - delete settings; - delete content; - } + ~RichMediaAnnotationPrivate() override; Annotation *makeAlias() override { return new RichMediaAnnotation(*this); } @@ -4537,6 +4533,12 @@ public: RichMediaAnnotation::Content *content; }; +RichMediaAnnotationPrivate::~RichMediaAnnotationPrivate() +{ + delete settings; + delete content; +} + RichMediaAnnotation::RichMediaAnnotation() : Annotation(*new RichMediaAnnotationPrivate()) { } RichMediaAnnotation::RichMediaAnnotation(RichMediaAnnotationPrivate &dd) : Annotation(dd) { } diff --git a/qt5/src/poppler-link-private.h b/qt5/src/poppler-link-private.h index 603ab36b..6a868722 100644 --- a/qt5/src/poppler-link-private.h +++ b/qt5/src/poppler-link-private.h @@ -1,5 +1,5 @@ /* poppler-link-private.h: qt interface to poppler - * Copyright (C) 2016, 2018, Albert Astals Cid <[email protected]> + * Copyright (C) 2016, 2018, 2020 Albert Astals Cid <[email protected]> * Copyright (C) 2018 Intevation GmbH <[email protected]> * Copyright (C) 2020 Oliver Sander <[email protected]> * @@ -36,7 +36,7 @@ class LinkPrivate public: LinkPrivate(const QRectF &area) : linkArea(area) { } - virtual ~LinkPrivate() { qDeleteAll(nextLinks); } + virtual ~LinkPrivate(); static LinkPrivate *get(Link *link) { return link->d_ptr; } @@ -51,6 +51,7 @@ class LinkOCGStatePrivate : public LinkPrivate { public: LinkOCGStatePrivate(const QRectF &area, const std::vector<::LinkOCGState::StateList> &sList, bool pRB) : LinkPrivate(area), stateList(sList), preserveRB(pRB) { } + ~LinkOCGStatePrivate() override; std::vector<::LinkOCGState::StateList> stateList; bool preserveRB; @@ -60,6 +61,7 @@ class LinkHidePrivate : public LinkPrivate { public: LinkHidePrivate(const QRectF &area, const QString &tName, bool show) : LinkPrivate(area), targetName(tName), isShow(show) { } + ~LinkHidePrivate() override; QString targetName; bool isShow; diff --git a/qt5/src/poppler-link.cc b/qt5/src/poppler-link.cc index bd5c215c..a2e0275d 100644 --- a/qt5/src/poppler-link.cc +++ b/qt5/src/poppler-link.cc @@ -1,5 +1,5 @@ /* poppler-link.cc: qt interface to poppler - * Copyright (C) 2006-2007, 2013, 2016-2019, Albert Astals Cid + * Copyright (C) 2006-2007, 2013, 2016-2020, Albert Astals Cid * Copyright (C) 2007-2008, Pino Toscano <[email protected]> * Copyright (C) 2010 Hib Eris <[email protected]> * Copyright (C) 2012, Tobias Koenig <[email protected]> @@ -69,47 +69,64 @@ LinkDestinationPrivate::LinkDestinationPrivate() changeZoom = false; } +LinkPrivate::~LinkPrivate() +{ + qDeleteAll(nextLinks); +} + +LinkOCGStatePrivate::~LinkOCGStatePrivate() = default; + +LinkHidePrivate::~LinkHidePrivate() = default; + class LinkGotoPrivate : public LinkPrivate { public: LinkGotoPrivate(const QRectF &area, const LinkDestination &dest); + ~LinkGotoPrivate() override; QString extFileName; LinkDestination destination; }; LinkGotoPrivate::LinkGotoPrivate(const QRectF &area, const LinkDestination &dest) : LinkPrivate(area), destination(dest) { } +LinkGotoPrivate::~LinkGotoPrivate() = default; class LinkExecutePrivate : public LinkPrivate { public: LinkExecutePrivate(const QRectF &area); + ~LinkExecutePrivate() override; QString fileName; QString parameters; }; LinkExecutePrivate::LinkExecutePrivate(const QRectF &area) : LinkPrivate(area) { } +LinkExecutePrivate::~LinkExecutePrivate() = default; class LinkBrowsePrivate : public LinkPrivate { public: LinkBrowsePrivate(const QRectF &area); + ~LinkBrowsePrivate() override; QString url; }; LinkBrowsePrivate::LinkBrowsePrivate(const QRectF &area) : LinkPrivate(area) { } +LinkBrowsePrivate::~LinkBrowsePrivate() = default; class LinkActionPrivate : public LinkPrivate { public: LinkActionPrivate(const QRectF &area); + ~LinkActionPrivate() override; LinkAction::ActionType type; }; LinkActionPrivate::LinkActionPrivate(const QRectF &area) : LinkPrivate(area) { } +LinkActionPrivate::~LinkActionPrivate() = default; class LinkSoundPrivate : public LinkPrivate { @@ -174,16 +191,19 @@ class LinkJavaScriptPrivate : public LinkPrivate { public: LinkJavaScriptPrivate(const QRectF &area); + ~LinkJavaScriptPrivate() override; QString js; }; LinkJavaScriptPrivate::LinkJavaScriptPrivate(const QRectF &area) : LinkPrivate(area) { } +LinkJavaScriptPrivate::~LinkJavaScriptPrivate() = default; class LinkMoviePrivate : public LinkPrivate { public: LinkMoviePrivate(const QRectF &area, LinkMovie::Operation operation, const QString &title, const Ref reference); + ~LinkMoviePrivate() override; LinkMovie::Operation operation; QString annotationTitle; @@ -192,6 +212,8 @@ public: LinkMoviePrivate::LinkMoviePrivate(const QRectF &area, LinkMovie::Operation _operation, const QString &title, const Ref reference) : LinkPrivate(area), operation(_operation), annotationTitle(title), annotationReference(reference) { } +LinkMoviePrivate::~LinkMoviePrivate() = default; + static void cvtUserToDev(::Page *page, double xu, double yu, int *xd, int *yd) { double ctm[6]; diff --git a/qt5/src/poppler-page.cc b/qt5/src/poppler-page.cc index 1670bc68..03aebab5 100644 --- a/qt5/src/poppler-page.cc +++ b/qt5/src/poppler-page.cc @@ -113,6 +113,8 @@ public: { } + ~Qt5SplashOutputDev() override; + void dump() override { if (partialUpdateCallback && shouldDoPartialUpdateCallback && shouldDoPartialUpdateCallback(payload)) { @@ -164,10 +166,13 @@ private: bool ignorePaperColor; }; +Qt5SplashOutputDev::~Qt5SplashOutputDev() = default; + class QImageDumpingQPainterOutputDev : public QPainterOutputDev, public OutputDevCallbackHelper { public: QImageDumpingQPainterOutputDev(QPainter *painter, QImage *i) : QPainterOutputDev(painter), image(i) { } + ~QImageDumpingQPainterOutputDev() override; void dump() override { @@ -180,6 +185,8 @@ private: QImage *image; }; +QImageDumpingQPainterOutputDev::~QImageDumpingQPainterOutputDev() = default; + Link *PageData::convertLinkActionToLink(::LinkAction *a, const QRectF &linkArea) { return convertLinkActionToLink(a, parentDoc, linkArea); diff --git a/qt5/src/poppler-pdf-converter.cc b/qt5/src/poppler-pdf-converter.cc index e15d38f2..5b9c309b 100644 --- a/qt5/src/poppler-pdf-converter.cc +++ b/qt5/src/poppler-pdf-converter.cc @@ -1,6 +1,6 @@ /* poppler-pdf-converter.cc: qt interface to poppler * Copyright (C) 2008, Pino Toscano <[email protected]> - * Copyright (C) 2008, 2009, Albert Astals Cid <[email protected]> + * Copyright (C) 2008, 2009, 2020, Albert Astals Cid <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,12 +33,15 @@ class PDFConverterPrivate : public BaseConverterPrivate { public: PDFConverterPrivate(); + ~PDFConverterPrivate() override; PDFConverter::PDFOptions opts; }; PDFConverterPrivate::PDFConverterPrivate() : BaseConverterPrivate(), opts(nullptr) { } +PDFConverterPrivate::~PDFConverterPrivate() = default; + PDFConverter::PDFConverter(DocumentData *document) : BaseConverter(*new PDFConverterPrivate()) { Q_D(PDFConverter); diff --git a/qt5/src/poppler-ps-converter.cc b/qt5/src/poppler-ps-converter.cc index 4c2f9aec..150c8650 100644 --- a/qt5/src/poppler-ps-converter.cc +++ b/qt5/src/poppler-ps-converter.cc @@ -1,5 +1,5 @@ /* poppler-ps-converter.cc: qt interface to poppler - * Copyright (C) 2007, 2009, 2010, 2015, Albert Astals Cid <[email protected]> + * Copyright (C) 2007, 2009, 2010, 2015, 2020, Albert Astals Cid <[email protected]> * Copyright (C) 2008, Pino Toscano <[email protected]> * Copyright (C) 2010 Hib Eris <[email protected]> * Copyright (C) 2011 Glad Deschrijver <[email protected]> @@ -41,6 +41,7 @@ class PSConverterPrivate : public BaseConverterPrivate { public: PSConverterPrivate(); + ~PSConverterPrivate() override; QList<int> pageList; QString title; @@ -75,6 +76,8 @@ PSConverterPrivate::PSConverterPrivate() { } +PSConverterPrivate::~PSConverterPrivate() = default; + PSConverter::PSConverter(DocumentData *document) : BaseConverter(*new PSConverterPrivate()) { Q_D(PSConverter); diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc index 879c8900..9724e2df 100644 --- a/qt6/src/poppler-annotation.cc +++ b/qt6/src/poppler-annotation.cc @@ -3450,11 +3450,7 @@ class RichMediaAnnotationPrivate : public AnnotationPrivate public: RichMediaAnnotationPrivate() : settings(nullptr), content(nullptr) { } - ~RichMediaAnnotationPrivate() override - { - delete settings; - delete content; - } + ~RichMediaAnnotationPrivate() override; Annotation *makeAlias() override { return new RichMediaAnnotation(*this); } @@ -3470,6 +3466,12 @@ public: RichMediaAnnotation::Content *content; }; +RichMediaAnnotationPrivate::~RichMediaAnnotationPrivate() +{ + delete settings; + delete content; +} + RichMediaAnnotation::RichMediaAnnotation() : Annotation(*new RichMediaAnnotationPrivate()) { } RichMediaAnnotation::RichMediaAnnotation(RichMediaAnnotationPrivate &dd) : Annotation(dd) { } diff --git a/qt6/src/poppler-link-private.h b/qt6/src/poppler-link-private.h index 603ab36b..6a868722 100644 --- a/qt6/src/poppler-link-private.h +++ b/qt6/src/poppler-link-private.h @@ -1,5 +1,5 @@ /* poppler-link-private.h: qt interface to poppler - * Copyright (C) 2016, 2018, Albert Astals Cid <[email protected]> + * Copyright (C) 2016, 2018, 2020 Albert Astals Cid <[email protected]> * Copyright (C) 2018 Intevation GmbH <[email protected]> * Copyright (C) 2020 Oliver Sander <[email protected]> * @@ -36,7 +36,7 @@ class LinkPrivate public: LinkPrivate(const QRectF &area) : linkArea(area) { } - virtual ~LinkPrivate() { qDeleteAll(nextLinks); } + virtual ~LinkPrivate(); static LinkPrivate *get(Link *link) { return link->d_ptr; } @@ -51,6 +51,7 @@ class LinkOCGStatePrivate : public LinkPrivate { public: LinkOCGStatePrivate(const QRectF &area, const std::vector<::LinkOCGState::StateList> &sList, bool pRB) : LinkPrivate(area), stateList(sList), preserveRB(pRB) { } + ~LinkOCGStatePrivate() override; std::vector<::LinkOCGState::StateList> stateList; bool preserveRB; @@ -60,6 +61,7 @@ class LinkHidePrivate : public LinkPrivate { public: LinkHidePrivate(const QRectF &area, const QString &tName, bool show) : LinkPrivate(area), targetName(tName), isShow(show) { } + ~LinkHidePrivate() override; QString targetName; bool isShow; diff --git a/qt6/src/poppler-link.cc b/qt6/src/poppler-link.cc index cd9f9bb3..7dd82b42 100644 --- a/qt6/src/poppler-link.cc +++ b/qt6/src/poppler-link.cc @@ -1,5 +1,5 @@ /* poppler-link.cc: qt interface to poppler - * Copyright (C) 2006-2007, 2013, 2016-2019, Albert Astals Cid + * Copyright (C) 2006-2007, 2013, 2016-2020, Albert Astals Cid * Copyright (C) 2007-2008, Pino Toscano <[email protected]> * Copyright (C) 2010 Hib Eris <[email protected]> * Copyright (C) 2012, Tobias Koenig <[email protected]> @@ -69,10 +69,20 @@ LinkDestinationPrivate::LinkDestinationPrivate() changeZoom = false; } +LinkPrivate::~LinkPrivate() +{ + qDeleteAll(nextLinks); +} + +LinkOCGStatePrivate::~LinkOCGStatePrivate() = default; + +LinkHidePrivate::~LinkHidePrivate() = default; + class LinkGotoPrivate : public LinkPrivate { public: LinkGotoPrivate(const QRectF &area, const LinkDestination &dest); + ~LinkGotoPrivate() override; QString extFileName; LinkDestination destination; @@ -80,10 +90,13 @@ public: LinkGotoPrivate::LinkGotoPrivate(const QRectF &area, const LinkDestination &dest) : LinkPrivate(area), destination(dest) { } +LinkGotoPrivate::~LinkGotoPrivate() = default; + class LinkExecutePrivate : public LinkPrivate { public: LinkExecutePrivate(const QRectF &area); + ~LinkExecutePrivate() override; QString fileName; QString parameters; @@ -91,26 +104,34 @@ public: LinkExecutePrivate::LinkExecutePrivate(const QRectF &area) : LinkPrivate(area) { } +LinkExecutePrivate::~LinkExecutePrivate() = default; + class LinkBrowsePrivate : public LinkPrivate { public: LinkBrowsePrivate(const QRectF &area); + ~LinkBrowsePrivate() override; QString url; }; LinkBrowsePrivate::LinkBrowsePrivate(const QRectF &area) : LinkPrivate(area) { } +LinkBrowsePrivate::~LinkBrowsePrivate() = default; + class LinkActionPrivate : public LinkPrivate { public: LinkActionPrivate(const QRectF &area); + ~LinkActionPrivate() override; LinkAction::ActionType type; }; LinkActionPrivate::LinkActionPrivate(const QRectF &area) : LinkPrivate(area) { } +LinkActionPrivate::~LinkActionPrivate() = default; + class LinkSoundPrivate : public LinkPrivate { public: @@ -174,16 +195,20 @@ class LinkJavaScriptPrivate : public LinkPrivate { public: LinkJavaScriptPrivate(const QRectF &area); + ~LinkJavaScriptPrivate() override; QString js; }; LinkJavaScriptPrivate::LinkJavaScriptPrivate(const QRectF &area) : LinkPrivate(area) { } +LinkJavaScriptPrivate::~LinkJavaScriptPrivate() = default; + class LinkMoviePrivate : public LinkPrivate { public: LinkMoviePrivate(const QRectF &area, LinkMovie::Operation operation, const QString &title, const Ref reference); + ~LinkMoviePrivate() override; LinkMovie::Operation operation; QString annotationTitle; @@ -192,6 +217,8 @@ public: LinkMoviePrivate::LinkMoviePrivate(const QRectF &area, LinkMovie::Operation _operation, const QString &title, const Ref reference) : LinkPrivate(area), operation(_operation), annotationTitle(title), annotationReference(reference) { } +LinkMoviePrivate::~LinkMoviePrivate() = default; + static void cvtUserToDev(::Page *page, double xu, double yu, int *xd, int *yd) { double ctm[6]; diff --git a/qt6/src/poppler-page.cc b/qt6/src/poppler-page.cc index 7153c514..f138f520 100644 --- a/qt6/src/poppler-page.cc +++ b/qt6/src/poppler-page.cc @@ -113,6 +113,8 @@ public: { } + ~Qt6SplashOutputDev() override; + void dump() override { if (partialUpdateCallback && shouldDoPartialUpdateCallback && shouldDoPartialUpdateCallback(payload)) { @@ -164,10 +166,13 @@ private: bool ignorePaperColor; }; +Qt6SplashOutputDev::~Qt6SplashOutputDev() = default; + class QImageDumpingQPainterOutputDev : public QPainterOutputDev, public OutputDevCallbackHelper { public: QImageDumpingQPainterOutputDev(QPainter *painter, QImage *i) : QPainterOutputDev(painter), image(i) { } + ~QImageDumpingQPainterOutputDev() override; void dump() override { @@ -180,6 +185,8 @@ private: QImage *image; }; +QImageDumpingQPainterOutputDev::~QImageDumpingQPainterOutputDev() = default; + Link *PageData::convertLinkActionToLink(::LinkAction *a, const QRectF &linkArea) { return convertLinkActionToLink(a, parentDoc, linkArea); diff --git a/qt6/src/poppler-pdf-converter.cc b/qt6/src/poppler-pdf-converter.cc index eac6c4dc..fe6ac4e2 100644 --- a/qt6/src/poppler-pdf-converter.cc +++ b/qt6/src/poppler-pdf-converter.cc @@ -1,6 +1,6 @@ /* poppler-pdf-converter.cc: qt interface to poppler * Copyright (C) 2008, Pino Toscano <[email protected]> - * Copyright (C) 2008, 2009, Albert Astals Cid <[email protected]> + * Copyright (C) 2008, 2009, 2020, Albert Astals Cid <[email protected]> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,12 +33,15 @@ class PDFConverterPrivate : public BaseConverterPrivate { public: PDFConverterPrivate(); + ~PDFConverterPrivate() override; PDFConverter::PDFOptions opts; }; PDFConverterPrivate::PDFConverterPrivate() : BaseConverterPrivate() { } +PDFConverterPrivate::~PDFConverterPrivate() = default; + PDFConverter::PDFConverter(DocumentData *document) : BaseConverter(*new PDFConverterPrivate()) { Q_D(PDFConverter); diff --git a/qt6/src/poppler-ps-converter.cc b/qt6/src/poppler-ps-converter.cc index 5519b0cd..65551678 100644 --- a/qt6/src/poppler-ps-converter.cc +++ b/qt6/src/poppler-ps-converter.cc @@ -1,5 +1,5 @@ /* poppler-ps-converter.cc: qt interface to poppler - * Copyright (C) 2007, 2009, 2010, 2015, Albert Astals Cid <[email protected]> + * Copyright (C) 2007, 2009, 2010, 2015, 2020, Albert Astals Cid <[email protected]> * Copyright (C) 2008, Pino Toscano <[email protected]> * Copyright (C) 2010 Hib Eris <[email protected]> * Copyright (C) 2011 Glad Deschrijver <[email protected]> @@ -41,6 +41,7 @@ class PSConverterPrivate : public BaseConverterPrivate { public: PSConverterPrivate(); + ~PSConverterPrivate() override; QList<int> pageList; QString title; @@ -75,6 +76,8 @@ PSConverterPrivate::PSConverterPrivate() { } +PSConverterPrivate::~PSConverterPrivate() = default; + PSConverter::PSConverter(DocumentData *document) : BaseConverter(*new PSConverterPrivate()) { Q_D(PSConverter); diff --git a/splash/SplashPattern.cc b/splash/SplashPattern.cc index b0d277eb..c433d422 100644 --- a/splash/SplashPattern.cc +++ b/splash/SplashPattern.cc @@ -12,6 +12,7 @@ // under GPL version 2 or later // // Copyright (C) 2010, 2011 Thomas Freitag <[email protected]> +// Copyright (C) 2020 Albert Astals Cid <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -48,3 +49,9 @@ bool SplashSolidColor::getColor(int x, int y, SplashColorPtr c) splashColorCopy(c, color); return true; } + +//------------------------------------------------------------------------ +// SplashGouraudColor +//------------------------------------------------------------------------ + +SplashGouraudColor::~SplashGouraudColor() = default; diff --git a/splash/SplashPattern.h b/splash/SplashPattern.h index 75e5e93b..dd12466e 100644 --- a/splash/SplashPattern.h +++ b/splash/SplashPattern.h @@ -90,6 +90,8 @@ private: class SplashGouraudColor : public SplashPattern { public: + ~SplashGouraudColor() override; + virtual bool isParameterized() = 0; virtual int getNTriangles() = 0; diff --git a/utils/pdftohtml.cc b/utils/pdftohtml.cc index bbf4bf4f..23e8cef4 100644 --- a/utils/pdftohtml.cc +++ b/utils/pdftohtml.cc @@ -13,7 +13,7 @@ // All changes made under the Poppler project to this file are licensed // under GPL version 2 or later // -// Copyright (C) 2007-2008, 2010, 2012, 2015-2019 Albert Astals Cid <[email protected]> +// Copyright (C) 2007-2008, 2010, 2012, 2015-2020 Albert Astals Cid <[email protected]> // Copyright (C) 2010 Hib Eris <[email protected]> // Copyright (C) 2010 Mike Slegeir <[email protected]> // Copyright (C) 2010, 2013 Suzuki Toshiya <[email protected]> @@ -144,7 +144,7 @@ class SplashOutputDevNoText : public SplashOutputDev public: SplashOutputDevNoText(SplashColorMode colorModeA, int bitmapRowPadA, bool reverseVideoA, SplashColorPtr paperColorA, bool bitmapTopDownA = true) : SplashOutputDev(colorModeA, bitmapRowPadA, reverseVideoA, paperColorA, bitmapTopDownA) { } - ~SplashOutputDevNoText() override { } + ~SplashOutputDevNoText() override; void drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, const Unicode *u, int uLen) override { } bool beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, const Unicode *u, int uLen) override { return false; } @@ -153,6 +153,9 @@ public: void endTextObject(GfxState *state) override { } bool interpretType3Chars() override { return false; } }; + +SplashOutputDevNoText::~SplashOutputDevNoText() = default; + #endif int main(int argc, char *argv[]) commit 9625dfa3c22dcb9075e062912cdf8c60b379d7d8 Author: Albert Astals Cid <[email protected]> Date: Thu Oct 29 14:29:11 2020 +0100 qt6: properly namespace enums to use the correct ones diff --git a/qt6/src/poppler-annotation.cc b/qt6/src/poppler-annotation.cc index 627f70fd..879c8900 100644 --- a/qt6/src/poppler-annotation.cc +++ b/qt6/src/poppler-annotation.cc @@ -1602,11 +1602,11 @@ TextAnnotation::InplaceAlignPosition TextAnnotation::inplaceAlign() const if (d->pdfAnnot->getType() == Annot::typeFreeText) { const AnnotFreeText *ftextann = static_cast<const AnnotFreeText *>(d->pdfAnnot); switch (ftextann->getQuadding()) { - case quaddingLeftJustified: + case AnnotFreeText::quaddingLeftJustified: return InplaceAlignLeft; - case quaddingCentered: + case AnnotFreeText::quaddingCentered: return InplaceAlignCenter; - case quaddingRightJustified: + case AnnotFreeText::quaddingRightJustified: return InplaceAlignRight; } } commit 1635cbced1c8fcf9a933324908502e7e45429ace Author: Albert Astals Cid <[email protected]> Date: Thu Oct 29 14:22:11 2020 +0100 stress-threads-qt6: Remove unused seed diff --git a/qt6/tests/stress-threads-qt6.cpp b/qt6/tests/stress-threads-qt6.cpp index 3803fd06..9f9734d6 100644 --- a/qt6/tests/stress-threads-qt6.cpp +++ b/qt6/tests/stress-threads-qt6.cpp @@ -34,12 +34,11 @@ class CrazyThread : public QThread { Q_OBJECT public: - CrazyThread(uint seed, Poppler::Document *document, QMutex *annotationMutex, QObject *parent = nullptr); + CrazyThread(Poppler::Document *document, QMutex *annotationMutex, QObject *parent = nullptr); void run() override; private: - uint m_seed; Poppler::Document *m_document; QMutex *m_annotationMutex; }; @@ -86,7 +85,7 @@ void SillyThread::run() } } -CrazyThread::CrazyThread(uint seed, Poppler::Document *document, QMutex *annotationMutex, QObject *parent) : QThread(parent), m_seed(seed), m_document(document), m_annotationMutex(annotationMutex) { } +CrazyThread::CrazyThread(Poppler::Document *document, QMutex *annotationMutex, QObject *parent) : QThread(parent), m_document(document), m_annotationMutex(annotationMutex) { } void CrazyThread::run() { @@ -264,7 +263,7 @@ int main(int argc, char **argv) QMutex *annotationMutex = new QMutex(); for (int i = 0; i < crazyCount; ++i) { - (new CrazyThread(QRandomGenerator::global()->generate(), document, annotationMutex))->start(); + (new CrazyThread(document, annotationMutex))->start(); } } _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
