diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-15 14:46:55 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-16 13:49:47 +0000 |
commit | b42953cc207af942f3f2e9948fb83e605fdde000 (patch) | |
tree | d5e942574f9fff7fb736a115e10b3dfee64dee08 | |
parent | fb446f0610b8341ebd0bb07a6008c965dd92db2b (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.h | 6 |
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(); } |