diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-03-04 14:28:48 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-03-05 10:45:06 +0100 |
commit | 9311a42677db244cd1c584f27270fa73f69d90d7 (patch) | |
tree | 0a580ee0e3463ee3710ee860eac03d4b08e6b24d | |
parent | fbe87464350f8bd66ddef5653280fac6bfadab3b (diff) | |
download | qtsvg-5.12.11.tar.gz |
Parts of our rendering assumes incoming doubles can still be sane
floats.
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>
(cherry picked from commit bfd6ee0d8cf34b63d32adf10ed93daa0086b359f)
-rw-r--r-- | src/svg/qsvghandler.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp index 73e8fb7..08ee781 100644 --- a/src/svg/qsvghandler.cpp +++ b/src/svg/qsvghandler.cpp @@ -672,7 +672,8 @@ static qreal toDouble(const QChar *&str) val = -val; } else { val = QByteArray::fromRawData(temp, pos).toDouble(); - if (std::fpclassify(val) != FP_NORMAL) + // Do not tolerate values too wild to be represented normally by floats + if (std::fpclassify(float(val)) != FP_NORMAL) val = 0; } return val; @@ -3042,6 +3043,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()) |