diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-02-15 13:04:03 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-02-22 13:22:31 +0000 |
commit | d015bb83ea0c45fd31e056a7d24e6d7b5ed37a91 (patch) | |
tree | 81f3f6993c22fd8dc082360086131116281b9b32 /src | |
parent | b20b2831bd81aff74e0dc4b664d6df9abb0f4eed (diff) |
QtQml: Fix coercion of undefined to float and double
It should result in NaN, not in 0.
[ChangeLog][QtQml][Important Behavior Changes] Converting a JavaScript
value to a double or float now always assumes JavaScript type coercion
semantics. In particular, converting a value that is not actually a
number now results in NaN where it previously sometimes resulted in 0.
Fixes: QTBUG-111179
Change-Id: If24444ae9014c8972761c565a6920f06699e485c
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit b9834e0ee9f086add6dd8a42e5cb40f87f91756b)
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 5e72b30f18..c0a1edc982 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -1530,6 +1530,12 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, QMet if (typeHint == QMetaType::Bool) return QVariant(value.toBoolean()); + if (typeHint == QMetaType::Double) + return QVariant(value.toNumber()); + + if (typeHint == QMetaType::Float) + return QVariant(float(value.toNumber())); + if (typeHint == QMetaType::QJsonValue) return QVariant::fromValue(QV4::JsonObject::toJsonValue(value)); |