aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-02-15 13:04:03 +0100
committerUlf Hermann <ulf.hermann@qt.io>2023-02-22 13:22:31 +0000
commitd015bb83ea0c45fd31e056a7d24e6d7b5ed37a91 (patch)
tree81f3f6993c22fd8dc082360086131116281b9b32 /src
parentb20b2831bd81aff74e0dc4b664d6df9abb0f4eed (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.cpp6
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));