[poppler] 3 commits - CMakeLists.txt cmake/modules glib/poppler-document.cc poppler/Annot.cc poppler/Annot.h poppler/CachedFile.cc poppler/CachedFile.h poppler/CairoOutputDev.cc poppler/JBIG2Stream.cc poppler/Link.cc poppler/Link.h poppler/PDFDocBuilder.cc poppler/PDFDocBuilder.h poppler/SplashOutputDev.cc poppler/Stream.cc poppler/Stream.h poppler/TextOutputDev.cc poppler/XRef.cc poppler/XRef.h qt5/src qt6/src qt6/tests splash/SplashPattern.cc splash/SplashPattern.h utils/pdftohtml.cc

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Oct 29 13:50:41 UTC 2020


 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 <aacid at kde.org>
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 <mkasik at redhat.com>
  * Copyright (C) 2019 Masamichi Hosoda <trueroad at trueroad.jp>
  * Copyright (C) 2019, Oliver Sander <oliver.sander at tu-dresden.de>
+ * Copyright (C) 2020 Albert Astals Cid <aacid at kde.org>
  *
  * 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 <thomas at eload24.com>
 // Copyright 2010, 2011 Hib Eris <hib at hiberis.nl>
-// Copyright 2010, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018-2020 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2013 Julien Nabet <serval2412 at yahoo.fr>
 //
 //========================================================================
@@ -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 <thomas at eload24.com>
 // Copyright 2010 Hib Eris <hib at hiberis.nl>
-// Copyright 2010, 2018, 2019 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018-2020 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -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 <jeff at infidigm.net>
 // Copyright (C) 2005, 2006 Kristian Høgsberg <krh at redhat.com>
-// Copyright (C) 2005, 2009, 2012, 2017-2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2005, 2009, 2012, 2017-2020 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2005 Nickolay V. Shmyrev <nshmyrev at yandex.ru>
 // Copyright (C) 2006-2011, 2013, 2014, 2017, 2018 Carlos Garcia Campos <carlosgc at gnome.org>
 // Copyright (C) 2008 Carl Worth <cworth at cworth.org>
@@ -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 <rkumar at archive.org>
 // Copyright (C) 2006 Paul Walmsley <paul at booyaka.com>
-// Copyright (C) 2006-2010, 2012, 2014-2019 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2006-2010, 2012, 2014-2020 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2009 David Benjamin <davidben at mit.edu>
 // Copyright (C) 2011 Edward Jiang <ejiang at google.com>
 // Copyright (C) 2012 William Bader <williambader at hotmail.com>
@@ -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 <aacid at kde.org>
+//
+//========================================================================
+
+#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 <hib at hiberis.nl>
-// Copyright 2010, 2018 Albert Astals Cid <aacid at kde.org>
+// Copyright 2010, 2018, 2020 Albert Astals Cid <aacid at kde.org>
 //
 //========================================================================
 
@@ -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 <aacid at kde.org>
+ * Copyright (C) 2006, 2009, 2012-2015, 2018-2020 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2006, 2008, 2010 Pino Toscano <pino at kde.org>
  * Copyright (C) 2012, Guillermo A. Amaral B. <gamaral at kde.org>
  * Copyright (C) 2012-2014 Fabio D'Urso <fabiodurso at hotmail.it>
@@ -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 <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2020 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2018 Intevation GmbH <intevation at intevation.de>
  * Copyright (C) 2020 Oliver Sander <oliver.sander at tu-dresden.de>
  *
@@ -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 <pino at kde.org>
  * Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
  * Copyright (C) 2012, Tobias Koenig <tokoe at kdab.com>
@@ -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 <pino at kde.org>
- * Copyright (C) 2008, 2009, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2008, 2009, 2020, Albert Astals Cid <aacid at kde.org>
  *
  * 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 <aacid at kde.org>
+ * Copyright (C) 2007, 2009, 2010, 2015, 2020, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
  * Copyright (C) 2011 Glad Deschrijver <glad.deschrijver at gmail.com>
@@ -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 <aacid at kde.org>
+ * Copyright (C) 2016, 2018, 2020 Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2018 Intevation GmbH <intevation at intevation.de>
  * Copyright (C) 2020 Oliver Sander <oliver.sander at tu-dresden.de>
  *
@@ -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 <pino at kde.org>
  * Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
  * Copyright (C) 2012, Tobias Koenig <tokoe at kdab.com>
@@ -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 <pino at kde.org>
- * Copyright (C) 2008, 2009, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2008, 2009, 2020, Albert Astals Cid <aacid at kde.org>
  *
  * 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 <aacid at kde.org>
+ * Copyright (C) 2007, 2009, 2010, 2015, 2020, Albert Astals Cid <aacid at kde.org>
  * Copyright (C) 2008, Pino Toscano <pino at kde.org>
  * Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
  * Copyright (C) 2011 Glad Deschrijver <glad.deschrijver at gmail.com>
@@ -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 <Thomas.Freitag at alfa.de>
+// Copyright (C) 2020 Albert Astals Cid <aacid at kde.org>
 //
 // 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 <aacid at kde.org>
+// Copyright (C) 2007-2008, 2010, 2012, 2015-2020 Albert Astals Cid <aacid at kde.org>
 // Copyright (C) 2010 Hib Eris <hib at hiberis.nl>
 // Copyright (C) 2010 Mike Slegeir <tehpola at yahoo.com>
 // Copyright (C) 2010, 2013 Suzuki Toshiya <mpsuzuki at hiroshima-u.ac.jp>
@@ -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 <aacid at kde.org>
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 <aacid at kde.org>
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();
         }
     }
 


More information about the poppler mailing list