aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-06-15 14:46:55 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-16 13:49:47 +0000
commitb42953cc207af942f3f2e9948fb83e605fdde000 (patch)
treed5e942574f9fff7fb736a115e10b3dfee64dee08
parentfb446f0610b8341ebd0bb07a6008c965dd92db2b (diff)
Avoid UB in qjsnumbercoercion.h
We need to check for NaN before casting a double to an integer. Task-number: QTBUG-94068 Change-Id: Ib7bfab5ab2e24af950c8f8d7b32c7d411bd8cb71 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit c3b0f8756aee5cc9d965a641088390fff0fed459) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/qml/common/qjsnumbercoercion.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/qml/common/qjsnumbercoercion.h b/src/qml/common/qjsnumbercoercion.h
index 51dbe6beb5..2517442bb6 100644
--- a/src/qml/common/qjsnumbercoercion.h
+++ b/src/qml/common/qjsnumbercoercion.h
@@ -49,9 +49,13 @@ class QJSNumberCoercion
{
public:
static constexpr int toInteger(double d) {
- int i = static_cast<int>(d);
+ if (!equals(d, d))
+ return 0;
+
+ const int i = static_cast<int>(d);
if (equals(i, d))
return i;
+
return QJSNumberCoercion(d).toInteger();
}