summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2023-08-22 09:31:57 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-08-29 22:21:13 +0000
commit66d7a5b2bfbe1f92622e1186568ee36e85a3726e (patch)
tree2d8c5af02cb4fbb2236a50f8c8c51e40768e8d01
parent8b4632b7204b6d17c58ad4d28b9fb5631d5bd1f9 (diff)
QtPdf: Fix memory leaks
In QPdfBookmarkModelPrivate::appendChildNode it was not necessary to call FPDF_LoadPage() just to be able to call FPDF_GetPageHeight(): the BookmarkModel has the QPdfDocument which can do that for it, using FPDF_GetPageSizeByIndex() instead. 7b8832ca2b84d549c9d374550c3c46b3d4d42a38 added QQuickPdfDocument::carrierFile() returning a pointer that QQuickPdfDocument continues to own. QQuickPdfDocument::setSource() took care of deleting the existing one if we open a different document, but the destructor did not delete it. Task-number: QTBUG-114953 Change-Id: Ie8d9cea456cb91d9541deb575dac17db0d367ead Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit 8289e5935c0990a4a97afeb1234296ea00ad8054) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/pdf/qpdfbookmarkmodel.cpp12
-rw-r--r--src/pdfquick/qquickpdfdocument.cpp5
2 files changed, 5 insertions, 12 deletions
diff --git a/src/pdf/qpdfbookmarkmodel.cpp b/src/pdf/qpdfbookmarkmodel.cpp
index c9035f21a..78d89cc9b 100644
--- a/src/pdf/qpdfbookmarkmodel.cpp
+++ b/src/pdf/qpdfbookmarkmodel.cpp
@@ -176,17 +176,7 @@ struct QPdfBookmarkModelPrivate
const FPDF_DEST dest = FPDFBookmark_GetDest(document, bookmark);
const int pageNumber = FPDFDest_GetDestPageIndex(document, dest);
- double pageHeight = 11.69 * 72; // A4 height
- {
- // get actual page height
- const QPdfMutexLocker lock;
- FPDF_PAGE pdfPage = FPDF_LoadPage(document, pageNumber);
- if (pdfPage)
- pageHeight = FPDF_GetPageHeight(pdfPage);
- else
- qCWarning(qLcBM) << "failed to load page" << pageNumber;
- }
-
+ const qreal pageHeight = m_document->pagePointSize(pageNumber).height();
FPDF_BOOL hasX, hasY, hasZoom;
FS_FLOAT x, y, zoom;
bool ok = FPDFDest_GetLocationInPage(dest, &hasX, &hasY, &hasZoom, &x, &y, &zoom);
diff --git a/src/pdfquick/qquickpdfdocument.cpp b/src/pdfquick/qquickpdfdocument.cpp
index 492c320d6..a9f0d196e 100644
--- a/src/pdfquick/qquickpdfdocument.cpp
+++ b/src/pdfquick/qquickpdfdocument.cpp
@@ -36,7 +36,10 @@ QQuickPdfDocument::QQuickPdfDocument(QObject *parent)
/*!
\internal
*/
-QQuickPdfDocument::~QQuickPdfDocument() = default;
+QQuickPdfDocument::~QQuickPdfDocument()
+{
+ delete m_carrierFile;
+};
void QQuickPdfDocument::classBegin()
{