diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2022-02-07 15:42:06 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2022-02-08 15:36:02 +0100 |
commit | 4f7b7995552b0220a9e431266e0119cd03a233cf (patch) | |
tree | b27ffbb7f4ef063f72a7eeea9d9611aafb41d7e1 | |
parent | dfa58067e31e77e20f0cd25f408e248c8ff82cf4 (diff) |
QQuickPdfSelection: Fix division by zero
QQuickPdfSelection::m_renderScale is used for division in
QQuickPdfSelection::updateResults(). Add warning message to
setRenderScale() and ignore the new value if it is zero.
Also avoid setting PdfSelection.renderScale to zero in
PdfScrollablePageView.
The division caused an assert:
ASSERT: "divisor < 0 || divisor > 0" in file qtbase/src/corelib/tools/qpoint.h, line 299
It was reproducible with the pdfviewer quick example.
Pick-to: 6.3 6.2
Change-Id: I31e08a9a28392fcc132470c8d94af1307447565a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r-- | src/pdfquick/qml/PdfScrollablePageView.qml | 2 | ||||
-rw-r--r-- | src/pdfquick/qquickpdfselection.cpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/pdfquick/qml/PdfScrollablePageView.qml b/src/pdfquick/qml/PdfScrollablePageView.qml index 9432f7be7..1e692324f 100644 --- a/src/pdfquick/qml/PdfScrollablePageView.qml +++ b/src/pdfquick/qml/PdfScrollablePageView.qml @@ -264,7 +264,7 @@ Flickable { anchors.fill: parent document: root.document page: navigationStack.currentPage - renderScale: image.pageScale + renderScale: image.pageScale == 0 ? 1.0 : image.pageScale fromPoint: textSelectionDrag.centroid.pressPosition toPoint: textSelectionDrag.centroid.position hold: !textSelectionDrag.active && !mouseClickHandler.pressed diff --git a/src/pdfquick/qquickpdfselection.cpp b/src/pdfquick/qquickpdfselection.cpp index bc4b7a765..0f75c44ac 100644 --- a/src/pdfquick/qquickpdfselection.cpp +++ b/src/pdfquick/qquickpdfselection.cpp @@ -396,6 +396,11 @@ qreal QQuickPdfSelection::renderScale() const void QQuickPdfSelection::setRenderScale(qreal scale) { + if (qFuzzyIsNull(scale)) { + qWarning() << "PdfSelection.renderScale cannot be set to 0."; + return; + } + if (qFuzzyCompare(scale, m_renderScale)) return; |