aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine.cpp
diff options
context:
space:
mode:
authorKari Oikarinen <kari.oikarinen@qt.io>2020-03-10 09:43:44 +0200
committerKari Oikarinen <kari.oikarinen@qt.io>2020-03-10 09:43:44 +0200
commitb67264a2644b22dc23f6a06ff48974c77cb45d84 (patch)
tree3ac6547ac4daecac92feb4d192ed0cf97f5b758a /src/qml/jsruntime/qv4engine.cpp
parentdf034c07be4828778d43a4037f89f31ac26f411d (diff)
parent92daa739ec114a0c9ae841db0459b0eff1f86cef (diff)
Merge 5.14 into 5.14.2
Diffstat (limited to 'src/qml/jsruntime/qv4engine.cpp')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index 76fefb767d..df2c46b64a 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -1516,7 +1516,11 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, int
return retn;
#endif
if (typeHint != -1) {
- retn = QVariant(typeHint, QMetaType::create(typeHint));
+ // the QVariant constructor will create a copy, so we have manually
+ // destroy the value returned by QMetaType::create
+ auto temp = QMetaType::create(typeHint);
+ retn = QVariant(typeHint, temp);
+ QMetaType::destroy(typeHint, temp);
auto retnAsIterable = retn.value<QtMetaTypePrivate::QSequentialIterableImpl>();
if (retnAsIterable._iteratorCapabilities & QtMetaTypePrivate::ContainerIsAppendable) {
auto const length = a->getLength();