summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2022-02-07 15:42:06 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2022-02-08 15:36:02 +0100
commit4f7b7995552b0220a9e431266e0119cd03a233cf (patch)
treeb27ffbb7f4ef063f72a7eeea9d9611aafb41d7e1
parentdfa58067e31e77e20f0cd25f408e248c8ff82cf4 (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.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 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;