aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvaluetypewrapper.cpp
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@qt.io>2020-08-05 11:18:32 +0200
committerFawzi Mohamed <fawzi.mohamed@qt.io>2020-08-06 23:56:37 +0200
commiteb2ac8dadf630451e7d8413dc7a125a7d92abd2b (patch)
treebe8c12e737e9f3bab4cf4efafee7dbb1b14962a2 /src/qml/qml/qqmlvaluetypewrapper.cpp
parent791eeb6ff1847d403814bdee9535381dd6041d8a (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.cpp10
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();