diff options
author | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2020-08-05 11:18:32 +0200 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@qt.io> | 2020-08-06 23:56:37 +0200 |
commit | eb2ac8dadf630451e7d8413dc7a125a7d92abd2b (patch) | |
tree | be8c12e737e9f3bab4cf4efafee7dbb1b14962a2 /src/qml/qml/qqmlvaluetypewrapper.cpp | |
parent | 791eeb6ff1847d403814bdee9535381dd6041d8a (diff) |
Fix tst_qqmlvaluetypes::toStringConversion
Fixes crash observed in I50bd32557c55dddcb197f163609fd7d5a1b2301b
Change-Id: I93f580dbdf5f6d4fe0ad87f4a8a4080421872e4a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlvaluetypewrapper.cpp')
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index 9407020614..846090278d 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -361,14 +361,8 @@ ReturnedValue QQmlValueTypeWrapper::method_toString(const FunctionObject *b, con RETURN_UNDEFINED(); QString result; - // Prepare a buffer to pass to QMetaType::convert() - alignas(alignof(QString)) unsigned char convertResult[sizeof(QString)]; - if (QMetaType::convert(w->d()->gadgetPtr(), w->d()->valueType()->metaType.id(), &convertResult, QMetaType::QString)) { - QString &string = reinterpret_cast<QString &>(convertResult); - result = string; - string.~QString(); - } else { - result += QString::fromUtf8(QMetaType::typeName(w->d()->valueType()->metaType.id())) + if (!QMetaType::convert(w->d()->gadgetPtr(), w->d()->valueType()->metaType.id(), &result, QMetaType::QString)) { + result = QString::fromUtf8(QMetaType::typeName(w->d()->valueType()->metaType.id())) + QLatin1Char('('); const QMetaObject *mo = w->d()->propertyCache()->metaObject(); const int propCount = mo->propertyCount(); |