summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2022-02-07 15:42:06 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-08 19:47:45 +0000
commit5474edbc17899ec377e93ffba9f61ead0c55f172 (patch)
tree813c6692d1e758ec07f1333c629b3f8adcdfc24f
parent470da803923de132e5ba6badac951fb3f8bf8224 (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. Change-Id: I31e08a9a28392fcc132470c8d94af1307447565a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 4f7b7995552b0220a9e431266e0119cd03a233cf) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/pdfquick/qml/PdfScrollablePageView.qml2
-rw-r--r--src/pdfquick/qquickpdfselection.cpp5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/pdfquick/qml/PdfScrollablePageView.qml b/src/pdfquick/qml/PdfScrollablePageView.qml
index aea1a70c2..ba8c8fb2a 100644
--- a/src/pdfquick/qml/PdfScrollablePageView.qml
+++ b/src/pdfquick/qml/PdfScrollablePageView.qml
@@ -261,7 +261,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 54a13828a..ea1452291 100644
--- a/src/pdfquick/qquickpdfselection.cpp
+++ b/src/pdfquick/qquickpdfselection.cpp
@@ -391,6 +391,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;