diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2023-08-22 09:31:57 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-29 22:21:13 +0000 |
commit | 66d7a5b2bfbe1f92622e1186568ee36e85a3726e (patch) | |
tree | 2d8c5af02cb4fbb2236a50f8c8c51e40768e8d01 | |
parent | 8b4632b7204b6d17c58ad4d28b9fb5631d5bd1f9 (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.cpp | 12 | ||||
-rw-r--r-- | src/pdfquick/qquickpdfdocument.cpp | 5 |
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() { |