fb83738
diff -up qt-everywhere-opensource-src-4.8.7/src/svg/qsvghandler.cpp.me qt-everywhere-opensource-src-4.8.7/src/svg/qsvghandler.cpp
fb83738
--- qt-everywhere-opensource-src-4.8.7/src/svg/qsvghandler.cpp.me	2021-03-09 14:23:00.636840796 +0100
fb83738
+++ qt-everywhere-opensource-src-4.8.7/src/svg/qsvghandler.cpp	2021-03-09 21:34:46.240482104 +0100
fb83738
@@ -68,6 +68,7 @@
fb83738
 #include "private/qmath_p.h"
fb83738
 
fb83738
 #include "float.h"
fb83738
+#include <cmath>
fb83738
 
fb83738
 QT_BEGIN_NAMESPACE
fb83738
 
fb83738
@@ -630,15 +631,10 @@ static qreal toDouble(const QChar *&str)
fb83738
         if (neg)
fb83738
             val = -val;
fb83738
     } else {
fb83738
-#if defined(Q_WS_QWS) && !defined(Q_OS_VXWORKS)
fb83738
-        if(sizeof(qreal) == sizeof(float))
fb83738
-            val = strtof(temp, 0);
fb83738
-        else
fb83738
-#endif
fb83738
-        {
fb83738
-            bool ok = false;
fb83738
-            val = qstrtod(temp, 0, &ok;;
fb83738
-        }
fb83738
+        val = QByteArray::fromRawData(temp, pos).toDouble();
fb83738
+        // Do not tolerate values too wild to be represented normally by floats
fb83738
+        if (std::fpclassify(float(val)) != FP_NORMAL)
fb83738
+            val = 0;
fb83738
     }
fb83738
     return val;
fb83738
 
fb83738
@@ -2945,6 +2941,8 @@ static QSvgStyleProperty *createRadialGr
fb83738
         ncy = toDouble(cy);
fb83738
     if (!r.isEmpty())
fb83738
         nr = toDouble(r);
fb83738
+    if (nr < 0.5)
fb83738
+        nr = 0.5;
fb83738
 
fb83738
     qreal nfx = ncx;
fb83738
     if (!fx.isEmpty())