40 lines
1.3 KiB
Diff
40 lines
1.3 KiB
Diff
From bfd6ee0d8cf34b63d32adf10ed93daa0086b359f Mon Sep 17 00:00:00 2001
|
|
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
Date: Thu, 04 Mar 2021 14:28:48 +0100
|
|
Subject: [PATCH] Clamp parsed doubles to float representable values
|
|
|
|
Parts of our rendering assumes incoming doubles can still be sane
|
|
floats.
|
|
|
|
Pick-to: 6.1 6.0 5.15 5.12
|
|
Fixes: QTBUG-91507
|
|
Change-Id: I7086a121e1b5ed47695a1251ea90e774dd8f148d
|
|
Reviewed-by: Robert Löhning <robert.loehning@qt.io>
|
|
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
|
|
---
|
|
|
|
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
|
|
index c937254..c88b6cc 100644
|
|
--- a/src/svg/qsvghandler.cpp
|
|
+++ b/src/svg/qsvghandler.cpp
|
|
@@ -672,6 +672,9 @@ static qreal toDouble(const QChar *&str)
|
|
val = -val;
|
|
} else {
|
|
val = QByteArray::fromRawData(temp, pos).toDouble();
|
|
+ // Do not tolerate values too wild to be represented normally by floats
|
|
+ if (std::fpclassify(float(val)) != FP_NORMAL)
|
|
+ val = 0;
|
|
}
|
|
return val;
|
|
|
|
@@ -3043,6 +3046,8 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node,
|
|
ncy = toDouble(cy);
|
|
if (!r.isEmpty())
|
|
nr = toDouble(r);
|
|
+ if (nr < 0.5)
|
|
+ nr = 0.5;
|
|
|
|
qreal nfx = ncx;
|
|
if (!fx.isEmpty())
|